C#调用C++接口的DLL结构体数组指针问题!在线求解!

C++接口,(不能更改)structPointVec3f{//储存XYZ的坐标值.floatxValue;floatyValue;floatzValue;};extern... C++接口,(不能更改)
struct PointVec3f{//储存XYZ的坐标值.
float xValue;
float yValue;
float zValue;
};
extern "C" ZSY_3DLIB_DLL_API void getPointCloud(PointVec3f *points, int pointNum);

C#接口引用

public struct PointVec3f
{
[MarshalAs(UnmanagedType.R4)]
public float xValue;
[MarshalAs(UnmanagedType.R4)]
public float yValue;
[MarshalAs(UnmanagedType.R4)]
public float zValue;
};
[DllImport("ZSY3DLib.dll", EntryPoint = "getPointCloud")]
public static extern void getPointCloud(ref PointVec3f points, int pointNum);
public void getPoint(PointVec3f[] points, int pointNum)
{
getPointCloud( ref points[0] ,pointNum);
}
C#函数引用
getPoint(points, Num*1024);

调试的时候传输的总是只用points[0],这个一维数组传到getPointCloud( ref points[0] ,pointNum)中,查了一下听说要用IntPrt,但是不知道怎么用,求大神帮忙解答一下!!
如图,想将points[]数组传送到函数getPointCloud()中,但是传输的总是一个一维的点!!
展开
 我来答
匿名用户
2013-09-27
展开全部
你函数申明调用的时候前面一个是数组 你传的是一个点啊 points[0] 是一个点啊
更多追问追答
追问
您好,有什么好的解决办法没??
追答
你C++ 里面声明的是传入一个数字的首地址  你C#干嘛给一个点的地址 不给数字的地址吗?
getPointCloud( ref points ,pointNum);
这样就是传的数组地址啊
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式