【发布时间】:2016-06-06 06:50:53
【问题描述】:
我需要从C 非托管代码中获取值。实际上我从非托管调用函数,函数的返回类型是点,点是结构。
以下方式提到的结构
typedef struct point
{
Poly* pol;
NL_DEGREE p;
VECTOR* vec;
} Point;
其中Poly 和VECTOR 是结构。
实际上我在C#中得到了IntPtr的返回值点。在得到IntPtr的值后,我尝试将这个Intptr转换为Array。以下面的方式转换Array。
point[] Q = new point[2];
int size= Marshal.SizeOf(new point());
for (int i = 0; i < 2; i++)
{
Q[i] = (point)Marshal.PtrToStructure(new IntPtr(Qptr.ToInt32() + (i * size)), typeof(point));
}
但是在得到数组后,每个结构元素的值都变成了null。我在这方面做错了什么,请任何人给我建议......
我在下面详细提到了用c#创建的结构。
public unsafe struct point
{
public Poly* pol;
public NL_DEGREE p;
public vECTOR* knt;
}
哪里聚
public unsafe struct Poly
{
public Int32 n;
public cpoint* Pw;
}
coint也是一个结构
public struct cpoint
{
public double x;
public double y;
public double z;
public double w;
}
向量在哪里
public unsafe struct VECTOR
{
public Int32 m;
public double *U;
}
【问题讨论】: