海康的DEMO使用VC++开发的,我是用C#来开发的,涉及到以下两个函数要求用C#引用:typedef int (__stdcall *pDataRec)(int sid, int iusrdata, int idatatype, char* pdata, int ilen);
typedef int (__stdcall *pMsgBack)(int sid, int opt, int param1, int param2);
typedef int HSESSION;
//IHikClientAdviseSink为回调函数的集合类,就是一个抽象类,只要有实现就行了CLIENT_API HSESSION __stdcall HIKS_CreatePlayer(IHikClientAdviseSink* pSink, void* pWndSiteHandle, pDataRec pRecFunc, pMsgBack pMsgFunc=0,int TransMethod=0);//创建PlayerCLIENT_API int __stdcall HIKS_OpenURL(HSESSION hSession,const char* pszURL,int iusrdata);//打开URL可运行到HIKS_OpenURL每次都返回-1,说明连接失败,但我在服务器端上看到已经连上服务器软件了,就是没有连上设备(VC同样的代码运行没问题的)。希望做过类似项目的高手能够不吝赐教。
typedef int (__stdcall *pMsgBack)(int sid, int opt, int param1, int param2);
typedef int HSESSION;
//IHikClientAdviseSink为回调函数的集合类,就是一个抽象类,只要有实现就行了CLIENT_API HSESSION __stdcall HIKS_CreatePlayer(IHikClientAdviseSink* pSink, void* pWndSiteHandle, pDataRec pRecFunc, pMsgBack pMsgFunc=0,int TransMethod=0);//创建PlayerCLIENT_API int __stdcall HIKS_OpenURL(HSESSION hSession,const char* pszURL,int iusrdata);//打开URL可运行到HIKS_OpenURL每次都返回-1,说明连接失败,但我在服务器端上看到已经连上服务器软件了,就是没有连上设备(VC同样的代码运行没问题的)。希望做过类似项目的高手能够不吝赐教。
不知对你用不用??
pMsgBack mb = new pMsgBack(MsgBack);
hSession = HIKS_CreatePlayer(null, _handle, null, mb, 0);其中mb如下:
public delegate int pMsgBack(int sid, int opt, int param1, int param2);
C#高手来看看,怎么实现啊!!!
http://www.hikvision.com/bbs/topic.aspx?topicid=955
我试了C#和VB。net的接口,也是出现楼主一样的问题。
强烈建议使用CreatePlayer第四个参数pMsgBack回调来创建播放器。
同意doubaijun的意见。
最后一句,我最后是用MFC解决的。