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; ContextOINTER):INTEGER;STDCALL; var ret:INTEGER;
length:LONGWORD;
frameType:INTEGER;
begin
ret:=10;
inc(ret);
end;
//注册回调函数
ret:=MP4Sys_RegisterStreamReadCallback(@MyCallback,self );
注册之后,tmSDK.DLL始终不能调用我的函数,不知道是什么原因。请大家帮我分析一下好吗?
有一个关于视频压缩的程序是用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; ContextOINTER):INTEGER;STDCALL; var ret:INTEGER;
length:LONGWORD;
frameType:INTEGER;
begin
ret:=10;
inc(ret);
end;
//注册回调函数
ret:=MP4Sys_RegisterStreamReadCallback(@MyCallback,self );
注册之后,tmSDK.DLL始终不能调用我的函数,不知道是什么原因。请大家帮我分析一下好吗?