u010046276
飞刀杂耍者
2016-02-25 10:27

C#写一款ip摄像头上位机,用RealPlayWnd.Handle;为啥是无效的句柄

20
  • c#
  • 窗口句柄
  • 摄像头
  • sdk

我在用C#做某款小众摄像头的二次开发,写成功过海康产品的上位机,但是这款一直遇到一个问题困扰着我!
给的Demo用的是C++语言,我选择C#开发,在成功调用了初始化函数和登录设备函数后(说明给的dll是对的),调用打开通道Client_OpenChannel(OPEN_INFO *pOpenInfo)函数却一直无法实现。
我是这样写的:
图片说明
一直返回无效句柄的意思。

厂家给的Demo里是这样写的:
    ![图片说明](https://img-ask.csdn.net/upload/201602/25/1456395886_293092.png)
 这个结构的定义

[StructLayoutAttribute(LayoutKind.Sequential)]
public struct tagIPNC_OPEN_INFO
{
public IntPtr hPlayWnd;
public emVideoRes ImageSize;
public emVideoCodecType CodecType;
public emAVStreamType StreamType;//主码流和次码流分辨率相同时,一般录像时使用主码流,预览时采用次码流
public emAVStreamProtocol Protocol;

        public bool bOpenDisplay;//是否打开预览
        public bool bScale;//是否按比例显示画面
        public bool bPlayAudio;//是否播放音频
        public bool bRecvAvData;//是否回调未解码数据
        public bool bRecvDecodedAvData;//是否回调解码数据,未打开预览时,不能回调解码数据

    }

   //打开通道函数的定义
    [DllImport("IPNCSDK.dll", EntryPoint = "Client_OpenChannel", CallingConvention = CallingConvention.Cdecl)]
    public static extern emReturnValue Client_OpenChannel(ref tagIPNC_OPEN_INFO pOpenInfo);

我想问:

1.这个返回的emReturninvalidateHwnd,基本上我确定了是说我赋的窗口控件的句柄不对 info.hPlayWnd = RealPlayWnd.Handle;可我以前的都是这么赋的,不知道为啥不对
2.相关C++到C#的转换我也做了很多回了,基本格式相关转换应该也没问题
3.这是一个小厂商的产品,但某一方面性能很好必须选用,他们之前也没用C#开发过,难道是他们的DLL的问题?隐隐有一种不安,我在执行状态下会出现这种
图片说明
SDK core dumped
这个core dumped是什么意思呢?
联系过厂家他们不管C#的事,这个问题困扰了我半个多月一直找不到端倪,求助大家,感激不尽!!!!

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

0条回答