1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
program tinfcdecl1;
{$mode objfpc}{$H+}
type
IcdeclIntf = interface
['{3C409C8B-3A15-44B2-B22D-6BAA2071CAAD}']
function DoSomething : longint; cdecl;
end;
{ TcdeclClass }
TcdeclClass = class(TInterfacedObject,IcdeclIntf)
private
FCounter: integer;
public
function DoSomething : longint; cdecl;
end;
{ TcdeclClass }
function TcdeclClass.DoSomething: longint; cdecl;
begin
inc(FCounter);
result := FCounter;
end;
var
js: TcdeclClass;
ji: IcdeclIntf;
i: longint;
begin
js := TcdeclClass.Create;
i := js.DoSomething;
ji := IcdeclIntf(js);
i := ji.DoSomething;
if i <> 2 then halt(1);
end.
|