LoadLibrary Problem



  • Ich programmiere ein ActiveX Control mit einer Viewer DLL. Ich habe ein Problem bei laden einer DLL.

    m_hTVModule = LoadLibrary( L"tvdll.dll" );
    

    Mit dem mitgelieferten Beispielcode funktioniert es einwandfrei. Ich habe auch die benötigten DLL in mein Debugverzeichnis kopiert, es geht aber dennoch nicht.
    Woran könnte das liegen?



  • Wie ist denn der Fehlercode? Ist es auch wirklich so, dass er die Datei nicht findet?



  • Es gibt keinen Fehler, nur m_hTVModule ist nach dem Aufruf Null.



  • thmsfrst schrieb:

    Es gibt keinen Fehler, nur m_hTVModule ist nach dem Aufruf Null.

    Schaue MSDN:
    "If the function fails, the return value is NULL. To get extended error information, call GetLastError.

    Also schau was dir GetLastError anzeigt.



  • Bei Rückgabe NULL musst du GetLastError ausführen. Dann gibt's auch 'nen Fehlercode.

    EDIT: Bei Problemen mit einer Funktion solltest du grundsätzlich immer erstmal in der Hilfe nachsehen und alles durchlesen. Oft findet man direkt die Lösung oder zumindest einen Ansatz.



  • GetLastError liefert -> 126. Ich bin neu in C++ und kenne die Fehlercodes nicht. Was bedeutet der Fehler? Wo kann nich das nachschauen?



  • Geh mit dem Cursor auf GetLastError, drück F1, dann öffnet sich die Hilfe (wer hätte das gedacht 😉 )! In der Beschreibung zur Funktion findest du einen Link "System Error Codes". Den solltest du dir direkt als Lesezeichen speichern.

    EDIT: Der Fehlertext zu 126 ist: "The specified module could not be found." Stimmt also.

    EDIT2: Du kannst ja testhalber mal probieren, ob eine absolute Pfadangabe dich weiterbringt...



  • OK 126 bedeutet: The specified module could not be found. Was nun?



  • thmsfrst schrieb:

    OK 126 bedeutet: The specified module could not be found. Was nun?

    Tja, ich bin mir gar nicht sicher, ob die DLL im Projektverzeichnis oder im Debug-Unterordner liegen muss. Probier doch mal, die ins Projektverzeichnis zu verschieben. Ich hab immer alle DLLs in einem Verzeichnis, dass in der PATH-Umgebungsvariable steht, die werden sowieso immer gefunden...



  • Du kannst ja zum testen mal den Pfad absolut angeben.
    Simon


Log in to reply