Michael Van Canneyt wrote:


On Mon, 9 Mar 2015, Xiangrong Fang wrote:

Hi all,
I define a procedure like this:

type
  TDataHandler = procedure(data: Pointer) of object;

procedure SetHandler(h: TDataHandler); external cdecl;

Now, can I implement SetHandler in a library written in C, then call h in C?

IMHO Not without separate assembler code for each CPU.

Michael.
How about using TMethod?

procedure DataHandler(DummySelf: Pointer; data: Pointer);
begin
  // do what you want to do, DummySelf is always nil.
end;

var
  Method: TMethod;
begin
  Method.Data := nil;
  Method.Code := @DataHandler;

  SetHandler(TDataHandler(Method));
end;

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to