Einzelnen Beitrag anzeigen

tommie-lie
(Gast)

n/a Beiträge
 
#13

Re: Dll zur Laufzeit verändern?

  Alt 27. Okt 2004, 17:50
Zitat von StanY:
Mh, aber ich würde es gerne so machen, dass er die DLL bei Programm start lädt, und beim Beenden wieder entlädt. (Wird ja automatisch gemacht)

Desweiteren soll er, wenn er den Befehl bekommt, die DLL während des Laufens neu laden.
Dein erster Wunsch und dein zweiter widersprechen sich doch ein ganz klein wenig, oder?
Du kannst natürlich auch das alte Handle nicht freigeben und immer weiter neue DLLs laden, je nachdem wie oft du das machst geht dir dann aber mit der Zeit der virtuelle Adressbereich aus, um eine DLL zu laden.
Es empfiehlt sich daher bei plugin-artigen Konstruktionen (wie das hier ja eine ist), die DLL vor dem erneuten Laden zu entladen, damit die alte DLL nicht mehr im Speicher gehalten werden muss.

Zitat von StanY:
Sie soll aber permanent verwendbar sein.
Solange die DLL nicht geladen ist, kann man sie nicht anwenden.

Zitat:
Wie geht das?
Beim Programmstart die Standard-DLL laden und wenn dann im Laufe des Programmes die DLL gewechselt werden soll, erst die alte entladen und anschließend die neue laden.

Zitat von StanY:
Btw. Ich dachte, das Handle ist nur wichtig, um die DLL zu laden... nicht, um sie zu erhalten.
Ist es auch, das Handle kannst du nach dem Laden wegwerfen und brauchst es nie wieder, wenn du Windows die DLL automatisch freigeben lässt. Aber du hast ja mit FreeLibrary die DLL gleich wieder aus dem Speicher rausgeschmissen, nachdem du die Funktionen zugewiesen hast. Und wie soll etwas aufgerufen werden, was nicht mehr im Speicher ist?
  Mit Zitat antworten Zitat