我以为问题出在我的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 关注
- 818 浏览
添加回答
举报
0/150
提交
取消