Ładowanie funkcji z biblioteki

Odpowiedz Nowy wątek
2006-08-11 18:22
artur_128
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ź

Pozostało 580 znaków

2006-08-11 18:35
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')

- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2006-08-17 06:40
0

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

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

[diabel]


Tomasz Andrzejewski
Delphi (XE3-XE7) framework engineer @ InterLan
MCP: Microsoft SQL Server 2008, Implementation and Maintenance

Pozostało 580 znaków

2006-08-17 11:00
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';

!!!

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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