![]() |
DLL zur laufzeit überschreiben?
Ich habe in meinem Projekt mehrere DLLs die beim start des programms dynamisch geladen werden.
Nun möchte ich gerne eine DLL updaten indem ich diese überschreibe ( z.b. einfach in delphi rekompiliren ) und dann per shell notify auf das change ereignis (überschreiben) diese entlade/neu lade. (die shell notify sache stellt kein problem dar) Nur soll das Hauptprogramm dabei halt nicht geschlossen werden, weil ja nur eine dll upgedated werden muss und es somit nicht unbedigt nötig wäre alles neu zu laden. Das Problem ist, dass sobald ich die DLL per LoadLibrary lade, diese writelocked ist. Gibts da vielleicht nen netten workaround? Ich dachte schon die datei vorm laden nach dateiname.dll.lock umzubenennen damit der dateiname dateiname.dll frei ist... aber die sache wird mir dann zu frickelig :)... deshalb frag ich erstmal lieber hier :wink: grüße, paresy |
Re: DLL zur laufzeit überschreiben?
Trenne dich von allen aus der DLL exportierten funktionen, rufe FreeLibrary auf, überschreibe die dll, und lade sie erneut.
das wäre meine lösung, ciao, Philipp |
Re: DLL zur laufzeit überschreiben?
Zitat:
grüße, paresy |
Re: DLL zur laufzeit überschreiben?
hab ich richtig verstanden, das du in delphi (IDE) die dll compilieren können willst, und dein programm lädt die dann automatisch nach und benutzt sie?
compiliere doch einfach in ein unterverzeichnis und lass dein programm da ein auge drauf halten und wenn da eine dll liegt (die neu compilierte) dann soll das programm die alte auslinken, die datei ersetzen, wieder linken |
Re: DLL zur laufzeit überschreiben?
Moin paresy,
und die Überwachung kannst Du mit ![]() ![]() |
Re: DLL zur laufzeit überschreiben?
Zitat:
bzw werd ichs so machen dass delphi alles nach /upd kompiliert und mein hauptprogramm am start alles von /upd nach /dll kopiert, die dlls aus /dll läd und danach in /upd auf updates wartet :) vielleicht etwas kompilizert, aber wird den zweck mit dem geringsten programmieraufwand erledigen :) dank an alle die sich den kopf darüber zerbrochen haben :wink: grüße, paresy |
Re: DLL zur laufzeit überschreiben?
hmm nu hab ich mir damit ziemlich ins knie geschossen :(
da ich jetzt alles von /upd nach /dll verschiebe und dort lade... kann ich die dll nicht mehr mit delphi debuggen, da sie ja nicht aus /upd heraus geladen wird sondern /dll... kann man irgendwo den dll pfad manuell einstellen die er debuggen soll? paresy :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:31 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-2025 by Thomas Breitkreuz