100分:急:如何在C#中调有这样参数的void **的函数

bluexingqing 2005-08-09 09:29:14
有这样一外部函数xXXXX(void **pViewWindow)
pviewWindow返回一个IVideoWindow接口
我该如何去定义和使用
...全文
199 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimh 2005-08-09
  • 打赏
  • 举报
回复
c#也有通用的指针IntPtr, 声明如下应该就可以了,
public IntPtr xXXXX(ref object oViewWindow)
不过返回类型不知道,如果要使用里面的数据,还需要转换成响应的类型。
zhongwanli 2005-08-09
  • 打赏
  • 举报
回复
IVideoWindow ivw = **pViewWindow as IVideoWindow ;
ivw.你的方法();
fengyunyubin 2005-08-09
  • 打赏
  • 举报
回复
呵呵,恭喜楼主,偶不懂,帮顶!
TechEye 2005-08-09
  • 打赏
  • 举报
回复
兄弟,你又来了,看来你还是不死心,是不是也是C++程序员啊。我好好给你说一下吧。

theProc(void** pViewWindow);
很明显,这个C++版本函数想返回一个对象(接口)指针。
不幸的是,C#中即使使用非安全代码,也只能获得非托管数据类型指针(byte,long,double,float,int),
此外C#中所有的对像都是托管类型,无法声明像这样的指针或代理:object* pObject;

明显的,你的pViewWindow指向的是非托管对象,因为,C#帮不了你。
所以,你只好再回到C++里把这个函数包装一下,只接受基本数据类型指针。

good luck guy!!
bluexingqing 2005-08-09
  • 打赏
  • 举报
回复
偶搞定了
bflovesnow 2005-08-09
  • 打赏
  • 举报
回复
不懂,帮顶
silverseven7 2005-08-09
  • 打赏
  • 举报
回复
顶 给点分
salmon230 2005-08-09
  • 打赏
  • 举报
回复
恭喜
lovevsnet 2005-08-09
  • 打赏
  • 举报
回复
应该用IntPtr就能搞定的,
theProc(out IntPtr pViewWindow);
TechEye 2005-08-09
  • 打赏
  • 举报
回复
bluexinqing?强啊,搞定了,贴出来让我们学习一下啊。
zhilunchen 2005-08-09
  • 打赏
  • 举报
回复
强,自己能搞定
okyzx 2005-08-09
  • 打赏
  • 举报
回复
U^P

110,552

社区成员

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

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

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