Ładowanie funkcji z biblioteki

0

Witam, mam taki problem, moja funkcja niemoże znaleźć wskaźnika w bibliotece o to kod tej procedurki

procedure TForm1.Button1Click(Sender: TObject);
var
  DLL : THandle;
  BOT : function(text:pansichar) : pchar;
  LibraryAdress : string;
  Text : String;
  Zapytanie : String;
  INI : TINIFile;
begin
  INI := TINIFile.Create(extractfiledir(paramstr(0)) + '\plugins.ini');
  LibraryAdress := '\google.dll';
  DLL := LoadLibrary(pchar(libraryadress)); // załadowanie pliku
  try
    @BOT := GetProcAddress(DLL, 'BOT()');  // pobranie wskaźnika do procedury
    if @BOT = nil then raise Exception.Create('Błąd');
    BOT(pchar(text)); // wykonanie procedury
  finally
    FreeLibrary(DLL);
  end;
end;

Czemu to niechcę działać ? Z górę dzięki z odpowiedź

0
  1. zobacz czy DLL <> 0 a jak nie to na 99% musisz podać pełną ścieżkę do pliku dll
  2. nie @BoT := GetProcAddress(DLL, 'BOT()') tylko @BoT := GetProcAddress(DLL, 'BOT')
0

jezeli uzywasz wskazan na miejsce dysku to najlepiej pakuj elementy do tego samego katalogu co aplikacja

 ExtractFilePatch(Application.ExeName+'nazwa.dll');

[diabel]

0
crowa napisał(a)

jezeli uzywasz wskazan na miejsce dysku to najlepiej pakuj elementy do tego samego katalogu co aplikacja

 ExtractFilePatch(Application.ExeName+'nazwa.dll');

[diabel]

Jak już, to

ExtractFilePatch(Application.ExeName) +'nazwa.dll';

!!!

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