Einzelnen Beitrag anzeigen

oXmoX

Registriert seit: 8. Jun 2005
85 Beiträge
 
#1

Callback mit externer C-dll

  Alt 23. Jun 2005, 18:38
Hallo Forum!

Hab mal eine Frage zu Funktionspointern. Ich verwende eine externe C-Bibliothek. Um ein Callback zu realisieren nimmt eine der verwendeten Funktionen ein Funktionspointer entgegen. Dieser ist vom Typ void* - also Pointer in Delphi.

Jetzt habe ich eine Prozedur "CallbackProc" erstellt, die nun als Pointer übergeben werden soll. Dazu wiederum ist die Funktion "SetupCallback" zuständig. Das Problem ist nur, dass meine Callback-Prozedur vom Typ "TCallbackProc" ist und ich keine Ahnung hab, wie ich daraus einen Pointer für die C-Funktion machen soll.

Code:
unit CallbackTest;

interface
 
type
  TCallbackProc = procedure(ImageIpl: P_IplImage);

function setCallback(callback: Pointer); cdecl;
procedure SetupCallback;
procedure CallbackProc(ImageIpl: P_IplImage);


implementation

var
  CallbackProcVar: TCallbackProc;

function setCallback(callback: Pointer); external 'abc.dll';

procedure CallbackProc(ImageIpl: P_IplImage);
begin
  ; // nix
end;

procedure SetupCallback;
begin
  CallbackProcVar := CallbackProc;
  setCallback(CallbackProcVar);
end;

end.
Bei dem oben abgebildeten Code sagt mir der Compiler jedenfalls "Nicht genügend wirkliche Parameter" in der Zeile "setCallback(CallbackProcVar);" ...kein Wunder: Ich übergebe ja auch einen Pointer, wie gefordert.

Was nun?
  Mit Zitat antworten Zitat