Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    17

    Come lanciare una dll in visual c++

    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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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.

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Come lanciare una dll in visual c++

    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
    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.
    Alla fine del programma dovresti poi fare una FreeLibrary().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    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.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    17

    problemi con dll

    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.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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 ...

  7. #7

    Re: problemi con dll

    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 ,
    "fare" un HINSTANCE? "Risolvere" un HINSTANCE? Posta il codice che hai scritto, che facciamo prima... :rollo:
    SE qualcuno mi può fare vedere un pezzo di codice di come fare a lanciare una dll.
    Come già detto una dll non si "lancia".
    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.
    Usa il Dependency Walker, incluso con il Visual Studio; assieme alle dependencies della dll ti fa vedere anche che funzioni esporta.
    ---EDIT---
    Al solito Oregon mi ha battuto sul tempo...
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.