C#中的std :: string?

我以为问题出在我的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则不起作用。

回答:

std :: string和c#字符串彼此不兼容。据我所知,就interop而言,c#字符串对应于传递char*wchar_t*使用c ++。

原因之一是std :: string可以有许多不同的实现,而c#不能假设您使用的是任何特定的实现。

以上是 C#中的std :: string? 的全部内容, 来源链接: utcz.com/qa/410942.html

回到顶部