我用的是海康的sdk,用到里面函数net_dvr_setrealdatacallback,调用回调函数提示calling conventions differ,怎么回事啊,不好意思,我现在只有10分
实际调用时的回调函数这样写: type
RealDataCallBack = procedure(lRealHandle: Longint; dwDataType: DWORD; pBuffer: PByte; dwBufSize, dwUser: DWORD); //这句要在调用界面写吗function NET_DVR_SetRealDataCallBack(lRealHandle: Longint; CallBack: RealDataCallBack; dwUser: DWORD): BOOL; stdcall; external "HCNetSDK.dll "; //这句要在调用界面写吗procedure MyRealDataCallBack(lRealHandle: Longint; dwDataType: DWORD; pBuffer: PByte; dwBufSize, dwUser: DWORD); //还是直接声明这个函数,然后下面写代码?
begin
//此处写回调处理函数的代码
end; ...... var
lRealHandle : Longint;
begin
......
lRealHandle := NET_DVR_RealPlay(......);
......
NET_DVR_SetRealDataCallBack(lRealHandle, MyRealDataCallBack, 1000); //1000为用户数据, 可以借此区分不同的回调 ,为什么这行会出现calling conventions differ错误,怎么回事啊 ......
end;
实际调用时的回调函数这样写: type
RealDataCallBack = procedure(lRealHandle: Longint; dwDataType: DWORD; pBuffer: PByte; dwBufSize, dwUser: DWORD); //这句要在调用界面写吗function NET_DVR_SetRealDataCallBack(lRealHandle: Longint; CallBack: RealDataCallBack; dwUser: DWORD): BOOL; stdcall; external "HCNetSDK.dll "; //这句要在调用界面写吗procedure MyRealDataCallBack(lRealHandle: Longint; dwDataType: DWORD; pBuffer: PByte; dwBufSize, dwUser: DWORD); //还是直接声明这个函数,然后下面写代码?
begin
//此处写回调处理函数的代码
end; ...... var
lRealHandle : Longint;
begin
......
lRealHandle := NET_DVR_RealPlay(......);
......
NET_DVR_SetRealDataCallBack(lRealHandle, MyRealDataCallBack, 1000); //1000为用户数据, 可以借此区分不同的回调 ,为什么这行会出现calling conventions differ错误,怎么回事啊 ......
end;
RealDataCallBack = procedure(lRealHandle: Longint; dwDataType: DWORD; pBuffer: PByte; dwBufSize, dwUser: DWORD); stdcall;
RealDataCallBack = procedure(lRealHandle: Longint; dwDataType: DWORD; pBuffer: PByte; dwBufSize, dwUser: DWORD); //这句要在调用界面写吗 function NET_DVR_SetRealDataCallBack(lRealHandle: Longint; CallBack: RealDataCallBack; dwUser: DWORD): BOOL; stdcall; external "HCNetSDK.dll "; //这句要在调用界面写吗
这两句在海康的sdk转换的声明中都有了啊,还要在界面中重写一次吗
我先试验下你的代码