这个回调函数为什么不能被调用? ( 积分: 100 )

  • 主题发起人 主题发起人 syt2000
  • 开始时间 开始时间
S

syt2000

Unregistered / Unconfirmed
GUEST, unregistred user!
好久没有来这里了,大家都好吗? 问大家一个问题:
有一个关于视频压缩的程序是用VC++6.0写的,其中用了一个回调函数,即通过调用tmSDK.DLL中的一个注册函数把我的函数注册进去,然后就调用我的程序了。
tmSDK.DLL中提供的回调注册函数:
int __cdecl MP4Sys_RegisterStreamReadCallback(STREAM_READ_CALLBACK StreamReadCallback, void *Context);
其中STREAM_READ_CALLBACK定义如下
typedef int (*STREAM_READ_CALLBACK )(ULONG channelNumber, void *context);

//用户的回调函数
int __cdecl MyCallback(ULONG ChannelNum, void *Context{
int abc;
abc=12;
abc++;
return 0;
}


//初始化
MP4Sys_RegisterStreamReadCallback(MyCallback, this);//注册回调函数
之后tmSDK.DLL就可以调用我的MyCallback函数了。

以上程序在VC++ 6.0运行正常,但是移植到Delphi 6.0就不正常了:
//用户设置的回调函数
function MyCallback(ChannelNum:LONGWORD; Context:POINTER):INTEGER;STDCALL; var ret:INTEGER;
length:LONGWORD;
frameType:INTEGER;
begin
ret:=10;
inc(ret);
end;

//注册回调函数
ret:=MP4Sys_RegisterStreamReadCallback(@MyCallback,self );
注册之后,tmSDK.DLL始终不能调用我的函数,不知道是什么原因。请大家帮我分析一下好吗?
 
function MyCallback(ChannelNum:LONGWORD; Context:POINTER):INTEGER; cdecl;
 
白河愁:按照你的方法加入了cdecl关键字后还是不行!
 
MP4Sys_RegisterStreamReadCallback(@MyCallback....
@MyCallback 这里出问题
应该是转成LONGWORD地址
 
41426277:
也不行呀!
 
后退
顶部