Dll nicht gefunden in einer DLL. VC 6.0 und VC 2008
-
Ich habe folgendes Problem, ich bekomme keine vernünftige Fehlermeldung wenn bei der initialsierung einer DLL dieser eine DLL fehlt.
Ich nutze eine selbstgeschriebene DLL ''Tool.dll'', diese wird in einer anderen Dll ''Test.dll'' vielfach gerufen. Wenn diese Tool.dll fehlt, bekomme ich keine vernünftige Fehlermeldung aus dem exe-file welche die Test.dll mit loadlibrary lädt.
Konfiguration
Tool.dll ist als konventionelle dll kompiliert, hat weiter keine Abhängikeiten ausser MSVC Runtimebibliotheken.
Test.dll ist als konventionelle dll, welche die Tool.dll implizit über das Headerfiles und das .lib file einbindet.Das ausführende Programm - welches die tool.dll nicht selber braucht und es deshalb auch nicht implizit über das .lib File einbindet - versucht die test.dll über loadlibrary explicit zu laden. Als Fehler bekomme ich eine Instancewert von 0 zurück und der Inhalt vpn Getlasterror ist auch nicht besonders erhellend.
Frage: Gibt es eine Möglichkeit, das implizite Fehlen der Library tool.dll in der Library test.dll bei der initialisierung der test.dll festzustellen und zu melden.
Danke
-
dietrich.peter schrieb:
Test.dll ist als konventionelle dll, welche die Tool.dll implizit über das Headerfiles und das .lib file einbindet.
Warum ist das so? Wenn die Tool-DLL ebenfalls mit LoadLibrary geladen würde
liesse sich das Problem einfach lösen.Der Returnwert 0 sagt ja auch, das LoadLibrary auf die Test.dll nicht erfolgreich war?
Was ist sagt denn GetLastError genau?Man könnte sich notfalls eine Liste aller verwendeten DLLs erzeugen und diese
"zur Probe" mal vorher laden. Dann weiss man detailliert was fehlt.
-
Was heuißt nicht erhellend.
Was sgat GetLastError?In welchen Verzeichnissen liegen die DLLs. Hat die Test.dll weitere Abhängigkeiten.
Benutze mal die Trace Funktion von Dependency Walker und schau mal was passiert, wenn die Tool.DLL geladen wird.