思維:用結構體作爲中間變量,也就是傳遞結構體,然後在C#中把結構體中的數據放進二維數組中。
C#接收代碼的形式:(這裏只是思路展示,非可運行代碼)
[DllImport("myDLL.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void myFunc([In][MarshalAs(UnmanagedType.LPArray, SizeConst = 0)] InStruct[] istruct, [Out] [MarshalAs(UnmanagedType.LPArray, SizeConst = 0)] OutStruct[] outstruct);
public struct InStruct
{
public int x;
public int y;
public int z;
}
public struct OutStruct
{
public int x;
public int y;
public int z;
}
//把C++通過結構體接收的數據,裝在二維數組中
int[,] data = new int[3,100];
InStruct[] instruct = new InStruct[100];
OutStruct[] outstruct = new OutStruct[100];
//在二維數組data中接收outstruct中的數據
C++中封裝的形式:
struct InStruct
{
int x;
int y;
int z;
};
struct OutStruct
{
int x;
int y;
int z;
};
extern "C" __declspec(dllexport) void myFunc(InStruct *instruct, OutStruct *outstruct)
{
InStruct instruct[100];
OutStruct outstruct[100];
//使用結構體對象傳進來或者傳出去數據,可以把二維數組的數據先賦給結構體
}