海康的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同样的代码运行没问题的)。希望做过类似项目的高手能够不吝赐教。

解决方案 »

  1.   

    http://www.cnblogs.com/goodyao/archive/2008/06/30/1232690.html
    不知对你用不用??
      

  2.   

    海康我都联系过了, 人家都是用VC写的,对C#不清楚,我测试VC也没问题,主要是用C#写了很多了,不然我就用VC重写了。
      

  3.   

    谢过agebu1983,你提供的那个是直连到DVR的,我要做的是基于流媒体服务器转发的客户端。
      

  4.   

    我也遇到你的同样问题,我是没有实行回调函数类,我用回调函数实现了相同的功能具体调用如下:
    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);
      

  5.   

    关注中!!!!
    C#高手来看看,怎么实现啊!!!
    http://www.hikvision.com/bbs/topic.aspx?topicid=955
      

  6.   

    这个问题已经解决,我想主要是我们的IHikClientAdviseSink这个抽象类写的有问题。改成消息回调问题就解决了。    public delegate int pMsgBack(int sid, int opt, int param1, int param2);       pMsgBack mb = new pMsgBack(MsgBack);            playSession = hkClient.HIKS_CreatePlayer(null, mHand, null, mb, 1); 有问题的加我qq176122348 一起探讨
      

  7.   

    我也遇到这个问题了。后来发现应该是由于vs.NET是不支持虚函数导致的。
    我试了C#和VB。net的接口,也是出现楼主一样的问题。
    强烈建议使用CreatePlayer第四个参数pMsgBack回调来创建播放器。
    同意doubaijun的意见。
    最后一句,我最后是用MFC解决的。