C#如何调用指针参数是指针类型的C++函数??

魏鎏 2007-06-18 08:36:58
问题:

用Visual C++编写的DLL文件,其中有一个函数func((long*)point,(long*)pointnum),其中point为一个点(Point类型的数组,pointnum为一个整型(int)的数组。但是,在C#中,func函数显示为func(ref int point,ref int pointnum)。
请问,我在C#中,定义了一个点数组Point[] point=new Point[3];
point[0]=new Point(100,100);
point[1]=new Point(200,100);
point[2]=new Point(200,200);
定义了一个整型数组 int[] pointnum=new int[1]
pointnum[0]=1;
怎么把这两个数组传递给func函数。
急求??
有请高手指教!!!
...全文
634 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Knight94 2007-06-26
  • 打赏
  • 举报
回复
to 对对,是Point类型的指针,但是在C#如何把Point类型的数组的地址传递给函数func((long*)point,(long*)pointnum),想了很长时间,尝试过很多办法,都不行。

首先,按照
http://www.pinvoke.net/default.aspx/Structures/POINT.html
在c#中重新定义POINT类型,然后再进行调用的时候,用Marshal.UnsafeAddrOfPinnedArrayElement方法把POINT类型的数组转换成IntPtr类型,再调用。

函数的dllimport改成如下
[DllImport(...)]
private static extern void func( IntPtr point,ref int pointnum);
魏鎏 2007-06-25
  • 打赏
  • 举报
回复
好象会的人不多啊? 继续等待!!!
魏鎏 2007-06-23
  • 打赏
  • 举报
回复
咳,不是因为不想用C++,目前这个项目用C#比较快,但是必须得调用一个C++写的DLL文件,所有才有这个问题,望高手指教一下!!!
魏鎏 2007-06-21
  • 打赏
  • 举报
回复
等待,急求帮助 ???
zjh222 2007-06-21
  • 打赏
  • 举报
回复
唉呀..你就好好用你的C++,为什么要用C#呀,C#的互操作是相当麻烦的,还不如直接用C++
魏鎏 2007-06-21
  • 打赏
  • 举报
回复
对对,是Point类型的指针,但是在C#如何把Point类型的数组的地址传递给函数func((long*)point,(long*)pointnum),想了很长时间,尝试过很多办法,都不行。
Knight94 2007-06-21
  • 打赏
  • 举报
回复
第一个参数的类型不对,按照你的解释应该是Point类型指针才对
魏鎏 2007-06-19
  • 打赏
  • 举报
回复
等待,急求帮助!!!
AhJo 2007-06-18
  • 打赏
  • 举报
回复
学习~~

110,533

社区成员

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

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

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