c# - 如何在托管代码 (C#) 中从 native 代码 (C++) 获取字符串数组

标签 c# c++ pinvoke marshalling

有什么办法可以从c++到c#获取字符串集合

C#代码

[DllImport("MyDLL.dll")]
private static extern List<string> GetCollection();
public static List<string> ReturnCollection()
{
    return GetCollection();
}

C++代码

std::vector<string> GetCollection()
{
std::vector<string> collect;
return collect;
}

以上代码仅为示例,主要目的是从C++中获取C#中的集合,不胜感激

//詹姆士

最佳答案

有多种方法可以解决这个问题,但它们都比您目前拥有的方法复杂得多。

将在 C++ 中分配的字符串传递给 C# 的最简单方法可能是作为 BSTR。这允许您在 C++ 中分配字符串并让 C# 代码解除分配它。这是您面临的最大挑战,BSTR 可以轻松解决它。

由于您需要一个字符串列表,您可以更改为将其编码为 BSTR 数组。这是一种方式,这可能是我会采用的方式,但还有许多其他方式。

关于c# - 如何在托管代码 (C#) 中从 native 代码 (C++) 获取字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5258607/

相关文章:

c++ - 从时间生成 'random' 数字?

c++ - 如何将Visual Studio宏值转换为预处理器指令?

c++ - CreateDirectory 不创建目录 VS2017 c++

c# - 如何在控制台应用程序中运行另一个 cmd.exe 调用?

c# - 调试 WCF 服务

c# - 引用类型存在于堆中,值类型存在于栈中

c# - 当 p/调用时,C/C++ 函数在 MonoTouch 中返回 NaN

c# - 如何在磁盘上获取准确的目录大小

c++ - Linux 上的 .NET Core - 编码(marshal)结构

c# - 在没有安全问题的情况下捕获网站缩略图