我调用以前VC6写的DLL中的CALLBACK,按照MSDN上做法如下
delegate void MyRealDataCallBack(参数);//委托
::jiankong::Frm_juzheng ^ MyFrm_junzheng = gcnew ::jiankong::Frm_juzheng;
MyRealDataCallBack^ f=gcnew MyRealDataCallBack(&jiankong::Frm_juzheng::RealDataCallBack);
m_lPlayHandle = NET_DVR_RealPlay_V30(lUserID, &struPlayInfo,f,NULL, bPreviewBlock);
static void CALLBACK RealDataCallBack(参数){todo}
编译无法通过啊!出错信息如下
error C2664: “NET_DVR_RealPlay_V30”: 不能将参数 3 从“jiankong::MyRealDataCallBack ^”转换为“void (__stdcall *)(LONG,DWORD,BYTE *,DWORD,void *)”
------解决方案--------------------------------------------------------
委托必须是托管函数
------解决方案--------------------------------------------------------
参考msdn:
Registering Callback Methods
http://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx#pinvoke_registeringcallback