c# - 将 C++ 字符串 vector 编码到 C#

标签 c# c++ dll interop pinvoke

我将如何返回 C++ std::vector<std::string>到 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。您可以使用 ATL::CComSafeArray 简化 C++ 中的安全数组编程。

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

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

关于c# - 将 C++ 字符串 vector 编码到 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43032508/

相关文章:

c++ - C++中按引用传递和按值传递之间重载歧义的实用解决方案

c++ - 返回对 DLL 中对象的引用

c# - LINQ 和 Activator.CreateInstance() 创建重复项

c# - 静态接口(interface)等效 C#

C# 一遍又一遍地循环一个过程,直到用户按下一个键

c# - Swig c++/c# 不断获取 "Type Initialized Exception"

c# - 存储库模式,应该是 1 :1?

c# - 在 C++ 中使用 C# 接口(interface)或在 C# 中使用 C++ 接口(interface)

powershell - 我可以将用 Delphi 编写的 DLL 加载到 PowerShell 中吗?

c# - 从 C++ COM DLL 回调到 C# 应用程序