【发布时间】:2013-08-25 21:03:11
【问题描述】:
我有点困惑我们是否可以使用 _bstr_t 在 c# 和 C++ 之间传递字符串,反之亦然。
我使用 C++/CLI 作为 C# 和 C++ 之间的中间层。
如果可能,还请举例说明如何在 C# 端和 C++/CLI 端对它进行编组,因为没有太多相关文档
还建议更好的数据类型/机制来传递字符串。
【问题讨论】:
-
在 C# 和 C++/CLI 之间,您可以使用
System::String^。至于 C++/CLI 和原生 C++ 之间,嗯……你的原生 C++ 代码需要什么? -
我需要以某种方式将字符串传递给本机 C++,那么我应该如何编组 System::String^。我应该选择原生 C++ 或其他数据类型的 char * 吗?我还需要将值从本机 C++ 传递回 C#。我该怎么做?
-
你的意思是原生 C++ 需要 std::string?
-
这取决于您的 C++ 代码和库。哪种字符串数据结构、字符集和编码最适合?数据结构将如何分配和释放?如果字符集不是 C# 使用的(Unicode),你想如何处理每个方向的不匹配?
标签: c# string c++-cli marshalling bstr