Forum Italiano sui Prodotti NI

annulla
Visualizzazione dei risultati per 
Cerca invece 
Intendevi dire: 

generazione file .lib partendo da una dll

Buon Giorno,
sto cercando di utilizzare una dll di cui possiedo il relativo .h  ma continuo a ricevere il seguente errore quando  in CVI eseguo "Options-Generate Dll Import Library"  "error:unable to create import library.error in header file"....nome file.h" at line 10,column9;sysntax error;found 'string constant'expecting ';'.La dll in questione è relativa alla comunicazione attraverso la porta USB con uno strumento(LK-GD500) della Keyence e i file mi sono stati inviati direttamente dalla casa madre.Allego il file .h relativo nella speranza che qualcuno possa darmi una mano.
Grazie comunque
Nicola Mirasole
  
 
0 Kudos
Messaggio 1 di 4
5.411Visualizzazioni

Premesso che non mi è mai capitato di generare una dll come stai facendo tu quindi questo è assolutamente un colpo al buio ( Smiley Sorpreso 😞 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.



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
Messaggio 2 di 4
5.401Visualizzazioni
Trovato proprio ora con una veloce ricerca su google: direi proprio che il tuo problema dovrebbe sparire inserendo gli #ifdef

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.



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
Messaggio 3 di 4
5.402Visualizzazioni

grazie mille funziona

Nicola Mirasole

0 Kudos
Messaggio 4 di 4
5.370Visualizzazioni