关于C#调用C++动态库的句柄类型的问题

canglanqu 2012-04-16 01:37:57
目前要做一个程序是C#语音写的,但是调用的动态库是C++的
其中有一个函数,在C++的demo源码中是这样用的
int streamhandle = Plat_PlayVideo(filename,(long)hwnd,0,0,0);
其中第二个参数是把句柄强制转化为long类型
现在我要用C#完成这个操作,第二个参数的句柄我能获取是IntPtr类型,怎么转化为
动态库中需要的值?
...全文
295 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztenv 2012-04-18
  • 打赏
  • 举报
回复
以上两位的均可以,函数型构声明为int32的就行 了
小志 2012-04-18
  • 打赏
  • 举报
回复
(int)IntPtr:不要用这种强制转换,试试IntPtr提供的转换方法:ToInt32()
IntPtr ptr = new IntPtr(1024);
int i = ptr.ToInt32();//i = 1024
WAN 2012-04-16
  • 打赏
  • 举报
回复
C++中的long其实和int一样都是32位的
在C#中进行PInvoke调用时,可以声明为IntPtr,直接传入32位的IntPtr;或声明为Int32,传入IntPtr.ToInt32()
canglanqu 2012-04-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
C++数据类型与C#对应关系
http://blog.163.com/xiaozhi797@126/blog/static/62440288201231341344512/
[/Quote]
嗯,这个我看了
我知道C++中句柄类型 HWND,对应的C#中的IntPtr
但是现在动态库中是(long)HWND,我在C#中传入的是(int)IntPtr
好像不行
小志 2012-04-16
  • 打赏
  • 举报
回复

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧