Loadlibrary Fehler 126 - Funktioniert mit exe, aber nicht mit xll


  • Mod

    SetDLlDirectory kann hier Abhilfe schaffen.



  • Hallo, danke für eure Antworten, dadurch ist mir das Problem ein wenig klarer geworden.

    Ich habe versucht mit SetDLLDirectory zu arbeiten, aber ich bekomme immer noch den Fehler 126 😕 Hab mich an der akzeptierten Antwort hier orientiert http://stackoverflow.com/questions/4385806/determine-the-loaded-path-for-dlls
    So sieht meine Funktion jetzt aus

    double squareInCpp(double &arg)
    {
    	SetDllDirectory(NULL); // Reset.
    	SetDllDirectory(""); // Plug "binary planting" security hole. `
    	SetDllDirectory("C:\\Programme\\XLW\\xlw-5.0.0f0\\xlw\\examples\\MyExample\\vc9\\Debug");
    
    	libHandle = LOADLIB("C:\\Programme\\XLW\\xlw-5.0.0f0\\xlw\\examples\\MyExample\\vc9\\Debug\\MeineDLL.dll");
    	if (!libHandle) {
    		double err = GetLastError(); // <--------- FEHLER 126
    		return err;
    	}
    
    	// mach was...
    
    	CLOSELIB(libHandle);
    	SetDllDirectory(NULL); // Reset.
    	SetDllDirectory(""); // Plug "binary planting" security hole. `
    
             ...
    }
    

    Wenn ich außerdem GetModuleFileName benutze, um den Pfad der xll Datei zu bekommen, liefert er mir stattdessen immer den Pfad der EXCEL.exe zurück 😞



  • DependencyWalker, ProcessMonitor, ...



  • DependencyWalker liefert wie vorher, dass MSVCR90D.DLL nicht gefunden wird. Bin gerade noch am googlen, so richtig schlau werde ich gerade nicht daraus...
    Werde mal ProcessMonitor installieren...

    SetDLLDirectory funktioniert - kann ich dann davon ausgehen, dass LoadLibrary auch die meine dll findet, aber den Fehler 126 liefert, weil diese DLL wiederum fehlende Referenzen hat?



  • Hmm ich komm leider nicht weiter, habe die MSVCR90D.DLL jetzt mit in den Ordner der xll und dll getan.
    Nun meckert der DependencyWalker nicht mehr, er warnt nur "Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module." bei den Dateien MPR.DLL und SHLWAPI.DLL
    Wenn ich das richtig in den DependencyWalker FAQs verstehe, ist diese Meldung nicht so wichtig.

    Trotzdem schafft es meine xll nicht, die dll zu laden 😞



  • ProcessMonitor listet mir meine xll Datei auf, aber nicht die zu ladende dll. Hmm, also kann die offensitchlich meine dll nicht geladen, es liegt also schon mal nicht an irgendwelchen Abhängigkeiten meiner DLL... 😕



  • Falls es jmd interessiert: Hat sich erledigt, wenn ich die Release Version der dll benutze klappt alles einwandfrei (also so wie im Ursprungs Post dargestellt).
    Hab vorher immer mit der debug version gearbeitet.



  • Hast du etwa auf einem System getestet wo kein Visual Studio installiert ist?
    Dann ist klar dass es nicht geht, weil dann einfach die Debug Varianten der Visual Studio Runtime DLLs fehlen.



  • Hallo hustbaer, doch auf dem System ist Visual Studio installiert.



  • Auch komisch, dann sollte die Debug DLL eigentlich genau so funktionieren...



  • Ja das hat mich leider auch viel Zeit gekostet, weiß leider auch nicht wieso, aber bin froh dass es jetzt geht. Wie gesagt, die Debug Version der DLL hatte auch keine Abhängigkeitsprobleme laut DependencyWalker...

    Danke für Eure Hilfe!


Anmelden zum Antworten