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?