Biblioteki dll metoda z parametrem i dynamiczne ładowanie

0

Mam bibliotekę DLL - test.dll, w której jest metoda
LPCWSTR metoda_dll(LPCWSTR xmlTL);
gdzie
xmlTL to wskaźnik na bufor ze strukturą XML

chciałbym z programu napisanego w Delphi załadować bibliotekę i wywołać tę metodę z parametrem. Czy możecie napisać przykładowy pseudokod. Próbuję wywołać ją w następujący sposób:

procedure TForm1.Button1Click(Sender: TObject);
var
  DLL : THandle; // uchwyt biblioteki
  proc : procedure;
begin
  DLL := LoadLibrary('test.dll'); // laduj biblioteke
  try
    @proc:= GetProcAddress(DLL, 'metoda_dll'); // laduj procedure
    if @proc=nil then raise Exception.Create('Bład - nie mogę znaleźć procedury w bibliotece!');
    proc; // wywolaj procedure
  finally
    FreeLibrary(DLL); // wreszcie zwolnij pamiec
  end;
end;

Problem polega na tym, że nie wiem co mam zrobić z paramterem xmlTL, a powyższe wywołanie zwraca błąd - Bład - nie mogę znaleźć procedury w bibliotece. Ma ktoś jakieś pomysły?

0

dynamicznie:

type metoda_dll_proc = function(xmlTL:pwidechar):pwidechar; cdecl;
var metoda_dll : metoda_dll_proc;
...
metoda_dll := GetProcAddress(...);

statycznie:

function metoda_dll(xmlTL:pwidechar):pwidechar; cdecl; external 'test.dll';
0

Masz nieprawidłową deklarację funkcji (a nie procedury!) wywoływanej z dll-ki.

0

Czy funkcja metoda_dll jest w ogóle eksportowana z tej biblioteki?
Czy znasz jej calling convention?
Czy wywołanie LoadLibrary się powiodło?
deklaracja zmiennej proc nie jest zgodna z deklaracją funkcji w bibliotece, a powinna.

0
mychal napisał(a):

Czy funkcja metoda_dll jest w ogóle eksportowana z tej biblioteki?
Czy znasz jej calling convention?
Czy wywołanie LoadLibrary się powiodło?
deklaracja zmiennej proc nie jest zgodna z deklaracją funkcji w bibliotece, a powinna.

Niestety nie wiem nic więcej na temat funkcja metoda_dll
Wywołanie LoadLibrary powiodło się.
Czy możesz powiedzieć jak powinna wyglądać deklaracja zmiennej proc?

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