我在用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#的事,这个问题困扰了我半个多月一直找不到端倪,求助大家,感激不尽!!!!