1
我需要從非託管代碼中獲取值C
。其實我從unmanaged調用函數,函數的返回類型是點,其中點是一個結構。從非託管代碼獲取值到託管代碼
結構提到以下方式
typedef struct point
{
Poly* pol;
NL_DEGREE p;
VECTOR* vec;
} Point;
凡Poly
和VECTOR
是結構。
其實我得到的返回值點作爲IntPtr
在C#
。之後獲得的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.What我發錯了這一點,請任何人建議我以後......
我提到在C#創建detaily結構下面。
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;
}
其中VECTOR
public unsafe struct VECTOR
{
public Int32 m;
public double *U;
}
感謝回答,我已經把結構這在C#創建在同一職位編輯的細節 – Shankar