vc DLL调用约定异常

vc DLL调用约定错误实时错误49,DLL调用约定错误:vc原型:typedef void (CALLBACK * CONNECT_STATUS_CALLBAC

vc DLL调用约定错误
实时错误49,DLL调用约定错误:

vc原型:
typedef void (CALLBACK * CONNECT_STATUS_CALLBACK)(int handle, int channel, unsigned char biCmd, int nResult, BYTE * pRetData, void* pContext);

void WINAPI ConnectStatusCallBack(int handle,int channel,CONNECT_STATUS_CALLBACK connect_status_callback,void* pContext);


vb声明:
Sub ConnectingProc(ByVal handle As Long, ByVal Channel As Long, ByVal biCmd As Byte, ByVal nResult As Long, ByVal pRetData As Long, ByVal pContext As Long)

Declare Function ConnectStatusCallBack Lib "Media.dll" (ByVal handle As Long, ByVal Channel As Long, ByVal pconnect_status_callback As Long, ByRef pContext As ContextInfo)

[解决办法]
void WINAPI ConnectStatusCallBack(int handle,int channel,CONNECT_STATUS_CALLBACK connect_status_callback,void* pContext);

这个函数可以这么看:

C/C++ code
void WINAPI                        // 这里是 void 就是没有返回,所以用 Sub 声明函数          ConnectStatusCallBack(   // 这里是函数名,唯一要注意的就是大小写          int handle,              // 这里是 int,但要看是什么系统,VC6 是两个字节,.net 是 4 个字节          int channel,             // 如果是 VC6 的用 Integer,如果是 .Net 用 Long          CONNECT_STATUS_CALLBACK connect_status_callback,  // 这个类型是函数指针,所以用 Long 类型          void* pContext);         // 这个是个任意指针,不过可以用 Any 忽略类型检查传递个指针过去