将 C++ 字符串向量编组到 C#

Marshal C++ string vector to C#

我如何将 C++ std::vector<std::string> return 转换为 C# 代码? 我的方法声明(C++ 端)目前看起来像:

__declspec(dllexport) std::vector<std::string> __cdecl Initialize(std::vector<std::string> array = {})

但我不知道如何获取 vector 或如何将其发送到 C++。

非常感谢任何帮助。

整理 vector 个字符串并非易事。

您可以考虑使用 C++/CLI 在 C++ 和 C# 之间构建一个桥接层。

如果您不想使用 C++/CLI,一个有效的替代方法是使用 SAFEARRAYs。您可以使用 ATL::CComSafeArray.

简化 C++ 中的安全数组编程

您可能会发现 this article on safe arrays on MSDN Magazine 有帮助。

你还应该注意字符串编码。如果您为 std::string 使用 UTF-8,那么您应该为 SAFEARRAY(BSTR) 或 .NET String class.

转换为 UTF-16