//void fRealDataCallBack(LONG lRealHandle,DWORD dwDataType,BYTE *pBuffer,DWORD dwBufSize,void *pUser);
typedef function<void (LONG,DWORD,BYTE *,DWORD,void *)> func;
func f1 = bind(&HikSDK::fRealDataCallBack,this,placeholders::_1,placeholders::_2,placeholders::_3,placeholders::_4,placeholders::_5);
这是关于function与bind定义的回调函数,被调函数原型为注释,原调函数为
typedef void (CALLBACK *REALDATACALLBACK) (LONG lPlayHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* pUser);
报错为
这个怎么解决?
&HikSDK::fRealDataCallBack这个函数怎么定义的,它是不是成员函数(成员函数包括隐含的this参数,所以不可以)
好像有两个问题
1.C++成员函数会绑定一个this指针在参数列表最前面,所以func f1=bind(...)这一行应该会有问题
2.lRealPlayHandle = NET_DVR_RealPlay_V40(lUserUD,&struPlayInfo,&f1,NULL);这样f1前面应该不需要&符号吧,因为f1本身已经是函数指针,报错信息里面对funcReal的详细描述里面尾巴上也是多一个*
参考下这个
void CALLBACK myStreamProc(LONG lPlayHandle, DWORD dwDataType, BYTE pBuffer, DWORD dwBufSize, void pUser)
streamHandle = NET_DVR_RealPlay_V40(m_u32Handle, &struPlayInfo, myStreamProc, this);