Aufruf einer Dll macht probleme



  • Hallo zusammen,

    ich habe in meinem Programm, probleme eine dll aufzurufen.
    Hier ein Ausschnitt:

    typedef char* (*tTestFunktion)(void);				
    tTestFunktion ProcAdd; 
    
    HMODULE h_dll = NULL;					
    h_dll = ::LoadLibrary("c:\\test.dll");
    long error_back = GetLastError();   // -> hier bekomme ich immer die 126 als Resultat!!
    
    if(error_back > 0)
         return;
    
    if (h_dll != NULL)	
    ProcAdd = (tTestFunktion) GetProcAddress(h_dll, "Schnittstelle_VW"); // (shift)?(TEXT("ArtikelsucheListe"));
    

    Das komische ist, wenn ich über den CFileDialog den Pfad wähle, funktioniert der Aufruf tadellos?! 😕 Ich habe so das gefühl, das der Systempfad, der zu dem Zeitpunkt, wie das LoadLibrary aufgerufen wird, nicht der richtige ist. Da ich aber nichts finden konnte, hoffe ich das ihr mir weiterhelfen könnt.

    Michael


  • Mod

    126 = Das angegebene Modul wurde nicht gefunden.

    Kann es sein, dass eine andere DLL noch benötigt wird. Schau Dir die DLL mal mit Depends an.



  • nun, ne eigentlich nicht... den, wenn ich den öffen Dialog(Betriebssystem) starte und die dll auswähle um dann den Pfad zu übergeben, funkioniert es wieder... das ist das merkwürdige. Wo sehe ich evtl. ob eine andere dll benötigt wird im Depends?? Kenne es leider nicht?!


  • Mod

    Gib in Google Depends ein und siehe da der erste Link ist:
    http://www.dependencywalker.com/

    Ansonsten gehört das zu den Booardmitteln von jedem VS!



  • dieser öffnen Dialog, setzt der intern vielleicht irgendwelche versteckten Pfad, auf die das LoadLibrary zugreift, den nachdem ich probelhalber dieser aufrufe und an die richtige stelle navigiere (ich übergebe aber trotzden den "alten" Pfad) funkioniert das LoadLibrary wie gewünscht?!

    Michael



  • So, hab den Fehler gefunden!!!

    Ich habe mal das aktuelle Verzeichnis vor dem Aufruf der Dll überprüft (GetCurrentDirectory). Dies zeigte auf meine Hauptaplikation!!

    Ich bin also hingegangen und habe dies mit SetCurrentDirectory auf meinen Pfad gesetzt und siehe da, es funktioniert 👍

    Vielleicht hilft euch diese Erkenntnis auch mal weiter!!!

    Gruß Michael


  • Mod

    Verstehe nicht warum das helfen sollte. Du gibst doch den volen Pfad auf die DLL an!


Anmelden zum Antworten