飞刀杂耍者 2016-02-25 10:27 采纳率: 14.3%
浏览 2140
已结题

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

我在用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条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
    • ¥50 成都蓉城足球俱乐部小程序抢票
    • ¥15 yolov7训练自己的数据集
    • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
    • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
    • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
    • ¥20 matlab yalmip kkt 双层优化问题
    • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
    • ¥88 实在没有想法,需要个思路
    • ¥15 MATLAB报错输入参数太多