飞刀杂耍者
2016-02-25 10:27C#写一款ip摄像头上位机,用RealPlayWnd.Handle;为啥是无效的句柄
20我在用C#做某款小众摄像头的二次开发,写成功过海康产品的上位机,但是这款一直遇到一个问题困扰着我!
给的Demo用的是C++语言,我选择C#开发,在成功调用了初始化函数和登录设备函数后(说明给的dll是对的),调用打开通道Client_OpenChannel(OPEN_INFO *pOpenInfo)函数却一直无法实现。
我是这样写的:
一直返回无效句柄的意思。
厂家给的Demo里是这样写的:

这个结构的定义
[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条回答
为你推荐
- 新建项目,生成一个窗口,想查找到它的句柄,怎么做。
- c语言
- c++
- 1个回答
- 如何将带有参数的函数句柄传递给Go中的另一个函数?
- it技术
- 互联网问答
- IT行业问题
- 计算机技术
- 编程语言问答
- 1个回答
- c# 如何获取外部程序无标题类名的文本内容
- 开发语言
- visual studio
- c#
- microsoft
- 1个回答
- C#调用C++的dll,C++程序中给结构体中变量赋值this指针,对应C#中应该怎么写呢?
- c++
- 指针
- c#
- this指针
- 结构
- 4个回答
- C# 怎么通过句柄知道某个按钮被单击或者某个窗口被打开?
- c#
- 3个回答