標準C轉C#對應,C++與C#互操作
阿新 • • 發佈:2019-01-29
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"