c# - C# 中的 std::string?

标签 c# c++ dll

我以为问题出在我的 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# string 彼此不兼容。据我所知,就互操作而言,c# 字符串对应于在 c++ 中传递 char*wchar_t*
原因之一是 std::string 可以有许多不同的实现,而 c# 不能假定您使用的是任何特定的实现。

关于c# - C# 中的 std::string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/874551/

相关文章:

c# - 使用隐式类型

c# - 如何从双向链表中删除节点?

c# - 如何给表格上色 逐渐从黄色到绿色

c++ - 如何使使用 AUTOUIC 添加的包含目录可用于下游目标?

python - 使用 Cygwin 编译并从 Python 调用的 C 程序挂起

c++ - 为什么不从入口点函数调用 FreeLibrary?

c++ - dumpbin 导出输出中的@number 是什么

c# - 使用反射按声明顺序获取属性

c++ - 为什么不对指针强制执行 constness?

c++ - 比较两个 C++ 十六进制字符串