将字符串向量C++封送到 C#

Marshal C++ string vector to C#

本文关键字:C++ 字符串 向量      更新时间:2023-10-16

如何返回 C# 代码的C++ std::vector<std::string>?我的方法声明(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++ 中的安全阵列编程。

您可能会发现这篇关于 MSDN 杂志上安全阵列的文章很有帮助。

您还应该注意字符串编码。如果对 std::string 使用 UTF-8,则应将 SAFEARRAY(BSTR) 或 .NET String 类转换为 UTF-16。