Zitat von
Luckie:
Hast du den mal unsere Vorschläge ausprobiert?
Ja, natürlich. Schon seit Anbeginn.
Was kann ich denn mehr tun, als vor direkt vor
Loadlibrary mit
FileExists zu prüfen, ob die
DLL existiert.
Wie schon gesagt, die DLLs befinden sich genau an dem Ort, wo LoadLibrary sie laden soll.
Ich verwende zum Laden absolute Pfade, die beim Programmstart gesetzt werden.
Auch der Vorschlag von
Apollonius die
DLL mit
FileCreate ( ... , GENERIC_READ ,..) gibt mir ein gültiges
Handle zurück und ich könnte die DLLs sogar auslesen.
Nochmal: Es liegt nicht daran, dass evtl. die
DLL nicht verfügbar ist. Sie ist genau da, wo sie geladen werden soll.
@SirThornberry
Leider darf ich die "defekte"
DLL nicht heraus geben. Sorry, aber ist nicht meine Entscheidung.
Was hättest du denn vor damit?
Zum "Spaß" habe ich mal eine Test-Anwendung gebastelt, die nur LoadLibrary ruft (und FreeLibrary),
so das mir nix quer kommt, und siehe da, er lädt die
DLL nicht -> 0-
Handle !
hierfür habe ich die
DLL ins gleiche Verzeichnis zu der Exe gelegt.
So nicht:
LoadLibrary('C:\Programme\Test\meine.dll');
und so nicht:
LoadLibrary(PChar(IncludeTrailingPathDelimiter(ExtractFilePath(Application.Exename)) + 'meine.dll'));
und so auch nicht:
LoadLibrary('.\meine.dll'));
Erst wenn ich die
DLL ohne die
DCU's neu erstelle, funktionieren alle 3 Aufrufe.
Also ich glaube wirklich, den "Ort der
DLL" kann ich zu 100% ausschließen.
Ich werd zum Elch!