请教VB如何声明一个_cdecl函数,用来被调用?开发过海康威视的朋友进
请教VB如何声明一个_cdecl函数,用来被调用?
标题有点不容易理解,具体是这样的,我在进行海康威视视频采集卡的二次开发,这里录像的功能,他的SDK要求注册一个回调函数,然后在回调函数里进行数据处理。
注册回调函数的声明是:
int __stdcall RegisterStreamDirectReadCallback(STREAM_DIRECT_READ_CALLBACK StreamDirectReadCallback,void *Context)
被回调的函数的声明是:
int __cdecl StreamDirectReadCallback(ULONG channelNum,void *DataBuf,DWORD Length,int frameType,void *context)
我的代码是按常规的VB回调方法写的,模块中代码:
Public Declare Function RegisterStreamDirectReadCallback Lib "DS40xxSDK.dll" (ByVal Callback As Long, ByVal Context As Long) As Long '声明RegisterStreamDirectReadCallback()Public Function StreamDirectReadCallback(ByVal channelNumber As Long, DataBuf As Long, ByVal Length As Long, ByVal FrameType As Long, ByVal Context As Long) As Long Debug.Print Length Debug.Print TimeEnd Function
Private Sub Form_Load() Me.BackColor = RGB(10, 10, 10) CardIni Me.hWnd, 704, 576 GetVPara b, c, s, H HScroll1.value = b HScroll2.value = c HScroll3.value = s HScroll4.value = H'上边那些代码是正常初始化,关系不大 RegisterStreamDirectReadCallback AddressOf StreamDirectReadCallback, 0&End Sub