Hallo zusammen, ich möchte dynamisch im Programmcode eine bestimmte dll über den Befehl LoadLibrary(...) einladen. Die dll befindet sich im Programmverzeichnis. Das funktioniert bei mir auch alles problemlos. Wenn ich die Anwendung allerdings mitsamt des kompletten Verzeichnisses auf einen anderen Rechner packe und ausführe, wir die Bibliothek nicht mehr gefunden und ich erhalte bei der Methoden LoadLibrary einen NULL-Pointer zurück.
Habt ihr ein ähnliches Problem schon einmal gehabt oder könnt mir sagen, woran es liegen könnte?
1. die Bibliothek hat andere Abhängigkeiten, wodurch das laden fehlschlägt wenn es diese auf dem anderen PC nicht findet 2. die Ladereihenfolge ist anders. LoadLibraryEx verwenden. Der Defaultwert für die Dll-Suche ist bei Vista z.b nicht mehr Arbeitsverzeichnis,System, sondern System,Arbeitsverzeichnis. Wenn dort schon eine dll mit gleichem namen existiert wirds nicht geladen oder die falsche geladen. -- class God : public ChuckNorris { };
Mit dem DepencyWalker kannst du dir alle Abhängigkeiten der Dll anschauen und auch welche unter Umständen auf dem aktuellen System fehlen. Nur um sicher zu gehen...
Wow, danke! Es fehlt die MSVCR80.DLL. Hast du da zufällig auch so ne schnelle Antwort, ob ich die vielleicht mit in die dll reincompilieren kann? Die dll wird für ein Projekt in meiner Firma benutzt und die msvcr80.dll auf alle systeme zu kopieren wäre mir unlieb.