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()中,但是传输的总是一个一维的点!! 展开
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);
这样就是传的数组地址啊
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询