1. 程式人生 > >標準C轉C#對應,C++與C#互操作

標準C轉C#對應,C++與C#互操作

DWORD-》UInt32

WORD-》ushort

函式原型 C++中

        //函式功能:測試
	//引數:    char* testIn1[IN]                  -- 測試傳入引數1
	//          char* testIn2[IN]               -- 測試傳入引數2
	//          char* testOut[OUT]          -- 測試傳出引數
	//返回值:  int                                -- 函式執行成功,則返回0;否則返回錯誤碼
	int vxTestFun1(char* testIn1, char* testIn2, char* testOut);

C#中互動對應

        [DllImport("Test.dll", EntryPoint = "vxTestFun1", CallingConvention = CallingConvention.Cdecl)]
        public static extern int vxTestFun1(string testIn1, string testIn2, IntPtr testOut);

C#中呼叫

            int MaxPath = 260;
            byte[] chararray = new byte[MaxPath];
            IntPtr x = Marshal.AllocHGlobal(MaxPath * sizeof(byte));//申請與chararray相同大小的記憶體
            Marshal.Copy(chararray, 0, x, MaxPath);//記憶體拷貝
            VxInvoker.vxTestFun1("testin1","testin2", x);
            Marshal.Copy(x, chararray, 0, MaxPath);
            Marshal.FreeHGlobal(x);//釋放記憶體
            string path = Encoding.Default.GetString(chararray).Trim("\0".ToCharArray()) ;//去除掉字串中多餘的終結符"\0"