Hallo zusammen,
mir wurde eine C-
DLL zur Verfügung gestellt, die ich in meine Delphi-Anwendung einbinden muss. Ich habe es im ersten Schritt dynamisch versucht:
Delphi-Quellcode:
// Deklarationen
TpdfGetNumPages =
function (pdf: Pointer): Integer;
cdecl;
pdfGetNumPages: TpdfGetNumPages;
// Hilfsfunktion
procedure LoadFunction(
var Func: Pointer;
const FuncName: AnsiString);
begin
if Func =
nil then begin
Func := GetProcAddress(FDLL_Handle, PAnsiChar(FuncName));
if Func =
nil then raise Exception.Create(Format('
Error loading function: "%s"', [FuncName]));
end;
end;
// Aufruf
LoadFunction(@pdfGetNumPages, '
pdfGetNumPages');
Result := pdfGetNumPages(pdf);
Anstatt der korrekten Seitenzahl 1 erhalte ich jedoch den Rückgabewert -899131968.
Nun das spannende: Wenn ich das Ganze statisch mache, funktioniert es!
Delphi-Quellcode:
function pdfGetNumPages(pdf: Pointer): Integer; cdecl;
function pdfGetNumPages; external 'DllName.dll';
Woran kann das liegen? Gibt es noch eine spezielle Variante von GetProcAdress für cdecl-Dlls?
Grüße,
Jan