Problem z FreeLibrary

0

Mam problem ze zwalnianiem dynamicznie załadowanej biblioteki. Pomimo, że biblioteka jest załadowana podczas jej zwalniania dostaje błąd Access Violation.

procedure TGlowneOkno.FormCreate(Sender: TObject);
var
  SearchRec : TSearchRec;
  temp: string;
  DLL_Handle: THandle;
  Ext: PAnsiChar;
  Info: procedure(var Info: TDllInfo); stdcall;
begin
  FindFirst(ExtractFilePath(ParamStr(0))+'components/*.*',faAnyFile, SearchRec);
  repeat
    Temp := Copy(lowercase(ExtractFileExt(SearchRec.name)),2,999);
    if (Temp = 'dll') then
    begin
      Ext := PAnsiChar(ExtractFilePath(ParamStr(0))+'components/'+SearchRec.name);
      DLL_Handle := LoadLibrary(Ext);
      if (DLL_Handle <> 0) then
      begin
        @Info := GetProcAddress(DLL_Handle, 'info');
        if (@info <> nil) then
        begin
          SetLength(DLLInfo, High(DLLInfo)+2);
          Info(DLLInfo[High(DLLInfo)]);
        end;
         //FreeLibrary(DLL_Handle);    <--tutaj jest błąd
      end;
    end;
  until FindNext(SearchRec) <> 0;
  FindClose(SearchRec);
end;

DLLInfo jest dynamiczną tablicą rekordów w postaci

type
  TDllInfo = record
    AcceptedTypes: string;
    FileName: string;
    Name: string;
  end;
0

A dodales modow ShareMem? Jest on konieczny do przesylania stringow do dll'ek.

0
WIktorDelphi napisał(a)

A dodales modow ShareMem? Jest on konieczny do przesylania stringow do dll'ek.

Dodałem, tylko teraz dopiero zauważyłem że nie jest pierwszy na liście już poprawione :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1