in data 03-09-2007 05:08 AM
in data 03-09-2007 09:52 AM
Premesso che non mi è mai capitato di generare una dll come stai facendo tu quindi questo è assolutamente un colpo al buio ( 😞 ho notato che in tutti gli #include file di CVI la dichiarazione della tua riga 10 è strutturata così:
#ifdef __cplusplus
extern "C" {
#endif
Il blocco è quindi chiuso allo stesso modo:
#ifdef __cplusplus
} // Balance extern "C" above
#endif
siccome __cplusplus non è definito nell'installazione di CVI, in realtà la definizione non viene eseguita. Prova a modificare il tuo header file allo stesso modo.
in data 03-09-2007 10:02 AM
Vale la pena di ricordare che se si sta scrivendo un programma in C++, e da questo si sta chiamando una funzione di libreria implementata in C, il codice C++ dovrà dichiarare tale funzione come extern "C". In caso contrario il linker non sarà in grado di localizzare la funzione C. Internamente, i compilatori C++ effettuano una "decorazione" (mangle) dei nomi delle funzioni C++ (ad esempio per necessità legate al riconoscimento dei tipi), e devono quindi essere informati del fatto che una determinata funzione deve essere chiamata come funzione C (e quindi priva di decorazione del nome).
Se si sta sviluppando una libreria di programma che potrebbe essere chiamata da C o C++ è raccomandabile includere delle dichiarazioni extern "C" nei file di intestazione così da predisporli automaticamente per gli utenti.
in data 03-13-2007 01:34 PM
grazie mille funziona
Nicola Mirasole