delphi类静态函数做为回调函数的有关问题

delphi类静态函数做为回调函数的问题
在使用一个dll时,一个接口需要传递一个回调函数指针进去
而用普通函数和类的静态函数传进去确得到不同的结果
函数声明分别为
class procedure Port.GlobalDataArrived(port :Integer);stdcall;
procedure GlobalDataArrived(port :Integer);stdcall;
函数主要内容如下
var
port1 :Integer;
begin
port1 :=port;
end;

在回调时类静态函数却产生错误的结果
反编译如下
class procedure Port.GlobalDataArrived(port :Integer);stdcall;
begin:
push ebp
mov ebp,esp
add esp,-$0c
push ebx
push esi
mov eax,[ebp+$0c]
mov [ebp-$0c],eax
.....

procedure GlobalDataArrived(port :Integer);stdcall;
begin:
push ebp
mov ebp,esp
add esp,-$0c
push ebx
push esi
mov eax,[ebp+$08]
mov [ebp-$0c],eax
.....

类的静态函数就不可以做回调函数吗?

------解决方案--------------------
如果你非要传静态函数进去,那么就请改回调函数定义
type
TOnDataArrive = procedure (port: Integer) of object; stdcall;
------解决方案--------------------
因为静态函数还是隐含的传了一个类指针,因为你是stdcall传参,所以第一个参数就是隐含的类指针。