Einzelnen Beitrag anzeigen

tommie-lie
(Gast)

n/a Beiträge
 
#11

Re: Dll zur Laufzeit verändern?

  Alt 27. Okt 2004, 17:28
Zitat von StanY:
Delphi-Quellcode:
procedure TfrmMain.LoadDll(DllName: String);
var
  Handle: THandle;
begin
  //Dll wird nun eingebunden
  Handle := LoadLibrary(PChar(DllName));
  if (Handle <> 0) then begin
    GetCommand := GetProcAddress(Handle,'GetCommand');
  end;
  FreeLibrary(Handle); // <---
end;
Na du bist lustig, gibst die Bibliothek wieder frei, bevor du sie aufrufst
Du kannst entweder FreeLibrary() ganz weglassen, Windows kümmert sich beim Beenden des Programmes automatisch um das freigeben aller Ressourcen, auch der DLLs. Da das aber in deinem Fall nicht praktikabel ist, solltest du das Handle der DLL als globale Variable deklarieren und eine zusätzliche UnloadDLL() implementieren, die das Handle mit FreeLibrary wieder freigibt. Dann kannst du in deinem Programm mit LoadDLL(URLfuerDLL) die DLL laden und mit UnloadDLL() wieder entladen und gleich darauf eine andere DLL laden.
Du musst nur sicher gehen, daß zwischen dem Entladen und dem Laden der DLL keine Funktion aus dieser DLL aufgerufen wird.
  Mit Zitat antworten Zitat