C#與C++之間dll的二維(多維)數組傳遞


思維:用結構體作爲中間變量,也就是傳遞結構體,然後在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];
	
	//使用結構體對象傳進來或者傳出去數據,可以把二維數組的數據先賦給結構體
}

發佈了43 篇原創文章 · 獲贊 16 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章