我以為問題出在我的C ++函數內部,但是我嘗試了C ++ dll中的C ++函數:bool __declspec( dllexport ) OpenA(std::string file){return true;}C#代碼:[DllImport("pk2.dll")]public static extern bool OpenA(string path); if (OpenA(@"E:\asdasd\"))我發現內存損壞了,為什么?如果我刪除了std :: string參數,則效果很好,但使用std :: string則不起作用。
3 回答

慕絲7291255
TA貢獻1859條經驗 獲得超6個贊
std :: string和c#字符串彼此不兼容。據我所知,就interop而言,c#字符串對應于傳遞char*或wchar_t*使用c ++。
原因之一是std :: string可以有許多不同的實現,而c#不能假設您使用的是任何特定的實現。
- 3 回答
- 0 關注
- 845 瀏覽
添加回答
舉報
0/150
提交
取消