View Full Version : [C]Uso dll in C
Salve a tutti.
Dovrei scrivere in C un piccolo programma in modo da utilizzare delle funzioni presenti in una dll che mi hanno passato.
Della Dll ho tutta la documentazione e solo la vera e propria liberia e un file .def.
Ho letto che č possibile eseguire un linkage esplicito o uno implicito.
L'unico problema č che non ho mai realizzato nulla di simile e la documentazione che ho trovato č un po troppo scarna.
Mi sapreste indicare qualche guida, qualche pagina qualche esempio che mi aitui un pň a comprendere come svolgere questo progetto??
Per la documentazione non ho preferenza tra inglese e italiano, l'importante č che sia chiara:)
Grazie a tutti:D :D
Ciaoooo
Della Dll ho tutta la documentazione e solo la vera e propria liberia e un file .def. col .def non ci fai niente, oltre alla documentazione ti serve necessariamente un header .h e opzionalmente un file .lib. il file .lib va linkato staticamente al tuo programma (lo sbatti al linker sulla linea di comando, se usi Visual C++ si fa dalle proprietá del progetto relative all'ijnput del linker) e ti permette di fare il linking implicito verso la DLL. altrimenti puoi fare il collegamento esplicito che significa caricare manualmente a runtime la DLL nel tuo processo (funzione API LoadLibrary http://msdn.microsoft.com/en-us/library/ms684175(v=VS.85).aspx ) e ottenere i puntatori alle funzioni che vuoi invocare (funzione API GetProcAddress: http://msdn.microsoft.com/en-us/library/ms683212(VS.85).aspx ).
L'unico problema č che non ho mai realizzato nulla di simile e la documentazione che ho trovato č un po troppo scarna. la documentazione é vastissima, in MSDN c'é tutto, solo che tocca un po' cercarla. se hai domande piu specifiche di sicuro io o altri lettori del forum possono indicarti la pagina giusta in MSDN. intanto nella pagina di GetProcAddress che ti ho linkato sopra trovi un esempio d'uso per il collegamento esplicito alla funzione GetNativeSystemInfo che sta in kernel32.dll, ma se puoi procurarti il file .lib e gli headers pubblici della DLL ti consiglio senz'altro di procedere col collegamento implicito perché é piu semplice: ti permette di invocare direttamente le funzioni senza doverne dichiarare i puntatori.
Per la documentazione non ho preferenza tra inglese e italiano, l'importante č ke sia chiara:) finalmente una persona che capisce l'importanza dell'inglese in questo settore :mano:
la libreria MSDN in realtá é tradotta (non da tools automatici, é tradotta a mano!! :eek: ) in molte lingue, ma io consiglio sempre la versione originale inglese per evitare di incorrere in errori di traduzione.
col .def non ci fai niente, oltre alla documentazione ti serve necessariamente un header .h e opzionalmente un file .lib. il file .lib va linkato staticamente al tuo programma (lo sbatti al linker sulla linea di comando, se usi Visual C++ si fa dalle proprietá del progetto relative all'ijnput del linker) e ti permette di fare il linking implicito verso la DLL. altrimenti puoi fare il collegamento esplicito che significa caricare manualmente a runtime la DLL nel tuo processo (funzione API LoadLibrary http://msdn.microsoft.com/en-us/library/ms684175(v=VS.85).aspx ) e ottenere i puntatori alle funzioni che vuoi invocare (funzione API GetProcAddress: http://msdn.microsoft.com/en-us/library/ms683212(VS.85).aspx ).
la documentazione é vastissima, in MSDN c'é tutto, solo che tocca un po' cercarla. se hai domande piu specifiche di sicuro io o altri lettori del forum possono indicarti la pagina giusta in MSDN. intanto nella pagina di GetProcAddress che ti ho linkato sopra trovi un esempio d'uso per il collegamento esplicito alla funzione GetNativeSystemInfo che sta in kernel32.dll, ma se puoi procurarti il file .lib e gli headers pubblici della DLL ti consiglio senz'altro di procedere col collegamento implicito perché é piu semplice: ti permette di invocare direttamente le funzioni senza doverne dichiarare i puntatori.
finalmente una persona che capisce l'importanza dell'inglese in questo settore :mano:
la libreria MSDN in realtá é tradotta (non da tools automatici, é tradotta a mano!! :eek: ) in molte lingue, ma io consiglio sempre la versione originale inglese per evitare di incorrere in errori di traduzione.
Intatto grazie mille per la risposta.
L'header della libreria l'ho recuperato quindi il file .h non č un problema.
Il file .lib non c'č(penso di poterlo recuperare con il comando lib di visual C++ oppure ricompliando la libreria da codice sorgente).
Considerando che le ultime due cose non le posso fare mi sa proprio che devo utilizzare il collegamento esplicito alla dll.
Intanto mi vedo la documentazione alle pagine msdn che mi hai linkato.
Grazie mille:)
Ciaooo
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.