DLL komplett freigeben
-
Tach,
ich hab folgendes Problem:
Ich hab ein größeres Projekt in MSVS 2005 mit einer kleinen exe die mehrere dlls aufruft, also der komplette Source Code ist so zu sagen in dlls auslgelagert, warum kommt gleich.
Nun habe ich eine Updateroutine geschrieben die die dlls patchen soll, diese wird gleich am Anfang von der exe ausgeführt bevor der eigentliche Code gestartet wird.
Nun zum eigentlichen Problem, da ich die anderen Unterprojekte in abhängigkeit gestzt habe werden natürlich die dlls gleich am Anfang geladen und ich kan sie in meiner Update.dll nicht mehr patchen da sie ja in Verwendung sind. Dieses Problem hab ich versucht zu umgehen, in dem ich die dlls auf "Verzögernd laden" gesetzt hab, allerdings werden sie trotzdem gleich am Start geladen.
In der Updateroutine versuch ich nochmals die dlls per__FUnloadDelayLoadedDLL2()zu entladen, die Funktion liefert zwarTRUEzurueck alledings wird die dll trotzdem nicht komplett entladen.
Hier nochmal der genaue Ablauf des Aufrufes:
(MainApp.exe)->(Update.dll)->(MainApp_Code.dll)->...Hoffe ihr könnt mir helfen ich weiss nicht mehr weiter

Kankomi
-
Schau Dir mit Depends.EXE an (Profile Funktion) was wirklich passiert.
Delayload hilft Dir hier nichts, wenn ein Stück Code beim Laden der DLL ausgeführt wird.
Bau doch eine Stub-DLL die MAIN lädt und allene für das Updatezuständig ist. Dann hast Du keine weiteren Abhängigkeiten.