Ciao volevo chidere se qualcuno sa come fare per esguire una dll in visual c+ , io la devo solo lanciare non l'ho creata io ho provato con LoadLibrary ma non fa niente grazie .
ciao
Ciao volevo chidere se qualcuno sa come fare per esguire una dll in visual c+ , io la devo solo lanciare non l'ho creata io ho provato con LoadLibrary ma non fa niente grazie .
ciao
Non hai ben chiaro il concetto di dll ... Una dll non si lancia (come se fosse un'applicazione).
Semplicemente si carica nello spazio di indirizzamento del processo che la usa (con la LoadLibrary) e si usano le funzioni esportate.
Non esiste "un punto" ben preciso dal quale "inizia" una dll, in quanto questa e' una collezione di funzioni richiamabili dal programma che la vuole usare.
Ovviamente il programma dovra' sapere quale funzione chiamare e quali parametri passare.
LoadLibrary() serve solo per caricare la DLL (se non lo è già) nello spazio di indirizzamento del processo. Poi dovresti usare GetProcAddress() per ottenere l'indirizzo delle funzioni esportate dalla DLL che vuoi chiamare. Ovviamente devi conoscere tu il prototipo delle funzioni, cioè cosa vogliono come parametri e cosa restituiscono.Originariamente inviato da JVins
Ciao volevo chidere se qualcuno sa come fare per esguire una dll in visual c+ , io la devo solo lanciare non l'ho creata io ho provato con LoadLibrary ma non fa niente grazie .
ciao
Alla fine del programma dovresti poi fare una FreeLibrary().
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Se ti va bene con la dll trovi anche un .lib e un file di header con l' elenco dei prototipi delle funzioni esportate dalla stessa.
Ciao scusate se vi rompo ancora, ho provato a fare il loadlibrary e il getprocadress , ho visto che bisogna fare un HINSTANCE ma quando vado a lanciare il programma di dice che non riesce ad risolvere HInstance , SE qualcuno mi può fare vedere un pezzo di codice di come fare a lanciare una dll. e poi siccome la dll non l'ho creata io ma e un altro programma in visual c++ e la dll la crea in automatico , come faccio a vedere cosa c'è dentro visto che non so come aprirla grazie.
Scusa JVins ma stai facendo un po' di confusione ...
Ti era stato detto che non puoi "lanciare" una DLL ma ne esegui solamente le funzioni che sono esportate dopo averla caricata.
E devi sapere tu quali sono le funzioni esportate e soprattutto, quali parametri si aspettano e cosa restituiscono. Usare una DLL "al buio" non e' possibile (e non ha senso).
Se vuoi dare un'occhiata all'elenco delle funzioni esportate (ma non ai parametri), puoi usare l'utility dumpbin, ad esempio cosi'
dumpbin /EXPORTS kernel32.dll
In alternativa, puoi usare il tool Dependency Walker (depends.exe) che puoi scaricare da Internet ...
"fare" un HINSTANCE? "Risolvere" un HINSTANCE?Originariamente inviato da JVins
Ciao scusate se vi rompo ancora, ho provato a fare il loadlibrary e il getprocadress , ho visto che bisogna fare un HINSTANCE ma quando vado a lanciare il programma di dice che non riesce ad risolvere HInstance ,Posta il codice che hai scritto, che facciamo prima... :rollo:
Come già detto una dll non si "lancia".SE qualcuno mi può fare vedere un pezzo di codice di come fare a lanciare una dll.
Usa il Dependency Walker, incluso con il Visual Studio; assieme alle dependencies della dll ti fa vedere anche che funzioni esporta.e poi siccome la dll non l'ho creata io ma e un altro programma in visual c++ e la dll la crea in automatico , come faccio a vedere cosa c'è dentro visto che non so come aprirla grazie.
---EDIT---
Al solito Oregon mi ha battuto sul tempo...![]()
Amaro C++, il gusto pieno dell'undefined behavior.