|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Oct 2008
Messaggi: 70
|
[C++] Utilizzare dll
Ciao ragazzi,
devo utilizzare una libreria esterna con c++. Ho solo il file.dll, come faccio a includerlo?? Grazie mille! |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
ti serve come minimo l'header che fornisce le definizioni della libreria, senza di quello non puoi fare nulla che non sia reverse engineering.
|
![]() |
![]() |
![]() |
#3 | |
Member
Iscritto dal: Oct 2008
Messaggi: 70
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
|
![]() |
![]() |
![]() |
#5 |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Se vuoi effettuare il linking statico, è possibile, utilizzando le utility dumpbin e lib fornite con visual studio, creare il file .lib a partire dalla dll.
1) Utilizzare l’utility DUMPBIN con l’opzione “/exports” per generare un file di testo che contenga i nomi delle funzioni esportate. 2) Modificare il file di testo formattandolo come un file .def. 3) Usare l’utility LIB con l’opzione /DEF per generare il file di importazione. Esempio. Abbiamo un dll chiamata "ScanDirDll" che contiene la funzione "DirWalk". Utilizziamo DUMPBIN nel modo seguente: Codice:
DumpBin /exports ScanDirDll.dll /out:ScanDirDll.def ![]() Va modificato come segue: ![]() Infine, per creare il file di importazione, eseguiamo il seguente comando: Codice:
LIB /DEF:ScanDirDll.def Devi comunque disporre(o creartene uno) del file header contenente le dichiarazioni delle funzioni che intendi utilizzare. ![]() |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Oct 2008
Messaggi: 70
|
Grazie Vincenzo.. adesso purtroppo non posso provare ma domani mi ci butto!
solo una conferma: la modifica del .def consiste nell'aggiungere LIBRARY ... e EXPORT... in testa e lasciare il resto non modificato, giusto? grazie ancora! |
![]() |
![]() |
![]() |
#7 | |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Quote:
dal file def generato dall'utility dumpbin devi togliere un bel po' di cose. Devi lasciare soltanto i nomi delle funzioni che vanno elencati nella sezione exports del file def. Nel caso che le funzioni da esportare siano poche(come nell'esempio: si tratta di una sola funzione) puoi creare direttamente il file a mano. Per esempio, supponiamo di avere una dll chiamata "myDll.dll" contenente una funzione chiamata "Somma" che accetta come parametri due double e restituisce un double. Creiamo il file myDll.def: Codice:
LIBRARY "myDll.dll" EXPORTS Somma Codice:
LIB /DEF:myDll.def Codice:
__declspec(dllimport) double Somma(double a, double b); ![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:56.