将 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,一个有效的替代方法是使用 SAFEARRAY
s。您可以使用 ATL::CComSafeArray
.
简化 C++ 中的安全数组编程
您可能会发现 this article on safe arrays on MSDN Magazine 有帮助。
你还应该注意字符串编码。如果您为 std::string
使用 UTF-8,那么您应该为 SAFEARRAY(BSTR)
或 .NET String
class.
转换为 UTF-16
我如何将 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,一个有效的替代方法是使用 SAFEARRAY
s。您可以使用 ATL::CComSafeArray
.
您可能会发现 this article on safe arrays on MSDN Magazine 有帮助。
你还应该注意字符串编码。如果您为 std::string
使用 UTF-8,那么您应该为 SAFEARRAY(BSTR)
或 .NET String
class.