那位 知道 c#在调用c++写的 dll动态链接库的时候,c++中有个函数的参数需要句柄为long型,不知道用c#如何调用,请高手指点以下 那位 知道 c#在调用c++写的 dll动态链接库的时候,c++中有个函数的参数需要句柄为long型,不知道用c#如何给c++API传参数才能调用,请高手指点以下高分奖赏 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 句柄类型一般使用c# IntPtr类型来对应。 MSDN的平台调用数据类型,給樓主參考。http://msdn.microsoft.com/zh-cn/library/ac7ay120(VS.80).aspx C++的long 对应C#的 int32 如果是句柄那就是 IntPtr 我试过 用IntPtr类型 因为我做的是 调用c++dll中的函数为其指定一个 容器如panel等作为视频的显示窗口我用InPtr类型 到没有 报错的得不到图像 Panel panel = new Panel(); panel.Handle;应该传递panel.Handle,这样也不行吗? 我就是这样传的 AVC_StartView(t.Iconnect, panel1.Handle, 0, 0, 0, 0);结果 应该是 panel中接受的是摄像头中的视频 但这样传结果没有 我是在找不到原因 请大家帮帮忙 AVC_StartView函数的代码有吗?如果有的话调试看看,传递的值可以修改为int类型的再试试;AVC_StartView(t.Iconnect, panel.Handle.ToInt32(), 0, 0, 0, 0); 或者unsafe { AVC_StartView(t.Iconnect, panel.Handle.ToPointer(), 0, 0, 0, 0); } 首先感谢你的帮助还是不行 是不是 不能用panel控件或其他什么原因? 使用IntPtr进行封送处理。 然后再使用Marshal类的方法获得需要的数据。如果你还不明白怎么做,我推荐你阅读刚刚出版的新书:《精通.NET互操作P/Invoke,C++Interop和COM Interop》,这本书详细且系统地介绍了.NET互操作的三种主要技术:P/Invoke,C++ Interop和COM Interop,你需要的问题在第2章“数据封送”中能找到解答。 该书的官方网站: www.interop123.com 豆瓣网信息: http://www.douban.com/subject/3671497/ HttpUtility.UrlEncode 问题求助大家,谢谢! 鼠标拖动控件,只有控件边框跟着鼠标移动,当MouseUp时控件到位! SQL CLR触发器返回的结果集,客户端怎么接受? 字符串中全角和半角的转化? 高分求一条可以过滤非法汉语音组合的正则表达式。 怎样才能成为论坛热帖???? 水晶报表只读问题 100求一个log4net+sqlite的winform例子 已知窗口标题"abc",怎么得到窗口句柄? 怎样将dataGrid的列名全移到左边,就像vs中的属性栏? 请问C#中怎么写VC6的事件接收器 平台调用,出现 System.AccessViolationException
http://msdn.microsoft.com/zh-cn/library/ac7ay120(VS.80).aspx
panel.Handle;
应该传递panel.Handle,这样也不行吗?
结果 应该是 panel中接受的是摄像头中的视频 但这样传结果没有 我是在找不到原因
请大家帮帮忙
如果有的话调试看看,传递的值可以修改为int类型的再试试;
AVC_StartView(t.Iconnect, panel.Handle.ToInt32(), 0, 0, 0, 0);
或者
unsafe { AVC_StartView(t.Iconnect, panel.Handle.ToPointer(), 0, 0, 0, 0); }
如果你还不明白怎么做,我推荐你阅读刚刚出版的新书:《精通.NET互操作P/Invoke,C++Interop和COM Interop》,这本书详细且系统地介绍了.NET互操作的三种主要技术:P/Invoke,C++ Interop和COM Interop,你需要的问题在第2章“数据封送”中能找到解答。
该书的官方网站:
www.interop123.com 豆瓣网信息:
http://www.douban.com/subject/3671497/