Marshal C ++字符串向量到C#

时间:2017-03-26 17:59:48

标签: c# c++ dll interop pinvoke

如何将C ++ function __construct() { $this->currentUser = JWTAuth::parseToken()->authenticate(); } 返回给C#代码? 我的方法声明(C ++方面)目前看起来像:

std::vector<std::string>

但我不知道如何获取__declspec(dllexport) std::vector<std::string> __cdecl Initialize(std::vector<std::string> array = {}) 或如何将其发送到C ++。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

编组vector字符串并非易事。

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

如果您不想使用C ++ / CLI,则有效的替代方法是使用SAFEARRAY。您可以使用ATL::CComSafeArray简化C ++中的安全数组编程。

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

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