![]() |
Dynamisch eingebundene Dll im laufenden Betrieb austauschen
Hallo zusammen,
ich versuche gerade vergeblich, eine dynamisch geladene eigene DLL in meinem Programm zu deaktivieren (FreeLibrary), sie neu zu kompilieren und neu zu laden, aber leider funktioniert das nicht so wie erwartet.
Doch wenn ich die neue DLL lade und eine Funktion aufrufe, erhalte ich immer noch das Ergebnis der alten DLL. Hmmm, vermutlich klappt das Ent-Laden nicht so ganz. Denn wenn ich dann das Programm schließe und neu starte, ist die neue Version der DLL verfügbar. Wie kann ich denn überprüfen, ob die alte Version wirklich entladen ist? Gibt es ein (freies) Tool, mit dem man alle von einem Prozess geladenen DLLs gut und übersichtlich sehen kann, vielleicht sogar live, sodass ich das Ent-Laden nachverfolgen könnte? Bin für jede Hilfe dankbar. Viele Grüße Harald |
AW: Dynamisch eingebundene Dll im laufenden Betrieb austauschen
Ohne Source : [GlaskugelMode = ON]
Vielleicht hast Du einen statischen Link auf die DLL - 2x geladen? Mavarik PS: Ich mache um jede DLL einen Interface-Wrapper. Out of Scope und weg... |
AW: Dynamisch eingebundene Dll im laufenden Betrieb austauschen
Löschen, anstatt Umbenennen.
Umbenennen/verschieben geht auch, selbst wenn eine Datei als MMF geladen ist, wie z.B. von einem normalen LoadLibrary (nur bei direktem Zugriff über ein aktives DateiHandle nicht) Löschen lässt sie sich dagegen aber nicht, so lange sie noch irgendwo geladen ist. |
AW: Dynamisch eingebundene Dll im laufenden Betrieb austauschen
Danke für Eure Unterstützung, die mich dann doch auch auf die richtige Debugging-Spur gebracht hat:
ich hab alle LoadLibrary und FreeLibrary mit Codesite ausgeben lassen:
Delphi-Quellcode:
und im einen Fall bekomme ich bei lHandle eine gültige Zahl, beim FreeLibrary aber ist lHandle = 0 :-(
lHandle := LoadLibrary(PChar(mModuleFilename));
CodeSite.Send('LoadLibrary', lHandle); ... CodeSite.Send('FreeLibrary', lHandle); FreeLibrary(lHandle); Also muss ich da weitersuchen ;-) Vielen Dank und schönen Abend noch Harald |
AW: Dynamisch eingebundene Dll im laufenden Betrieb austauschen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz