Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#25

AW: StreamOpen (TOpenDialog) beendet die Anwendung

  Alt 29. Jun 2013, 15:17
Beim Entladen der DLLs werden auch deren Entladeroutinen ausgeführt sofern die DLL nicht noch anderweitig im Programm benutzt wird. Vielleicht passiert da etwas, was das verursacht.
Dass zu jedem LoadLibrary genau ein FreeLibrary existiert, hast du ja sicher schon sichergestellt, oder? (Das war mein Problem in einer Anwendung einmal.)
Delphi-Quellcode:
//Prüfroutine für Winamp-Plugins
function IsWinampPlugin(APlugin:string):BOOL;
var
  ext : string;
  dll : HMODULE;

begin
  result := FALSE;
  ext := uppercase(ExtractFileExt(APlugin));

  if (ext <> '.DLL') then
    exit;

  dll := LoadLibrary(PWideChar(APlugin));
  if (dll = 0) then
    exit;

  if GetProcAddress(Dll, 'winampVisGetHeader') = nil then
  begin
    FreeLibrary(dll);
    exit;
  end;
  FreeLibrary(dll);

  result := TRUE;
end;
Ich suche recursive nach DLL's im Ordner wird eine gefunden und der Einsprungspunkt fehlt wird sie entladen.
Natürlich auch wenn er gefunden wird.

Das sollte eigentlich der richtige weg sein.
So funktioniert acuh mein Programm 100% als eigenständige EXE aber nicht in der IDE(Laden von Dateien) usw..
Entferne ich das letzte FreeLibrary dann funktioniert die IDE 100% aber die Anwendung nicht mehr bei diversen dingen.

gruss
  Mit Zitat antworten Zitat