将 C# 数组传递给 C++ 向量

Posted

技术标签:

【中文标题】将 C# 数组传递给 C++ 向量【英文标题】:passing C# array to C++ vector 【发布时间】:2020-12-26 06:13:26 【问题描述】:

我的 C# 将调用一个类方法(用 C++ 制作)并将 c# 数组数据提供给这个类方法,它接受向量作为数据容器。

当 myclass.method1 接受 myArrayCpp 作为 C++ 中的 double 数组时,它正在工作。现在我想将 myArrayCpp 设为向量。

怎么可能?

【问题讨论】:

现在我想将 myArrayCpp 设为向量。 -- 不要这样做,这样不行。在 C++ 代码内部,您将数组复制到向量中,仅此而已。 这是通过 pinvoke 实现的吗?您不能通过 pinvoke 安全地调用 c++ 代码,您必须编写一个 C 包装器来公开您需要的函数 @pm100 真的吗?我们一直通过 PInvoke 将 C# 链接到 C++。好吧,无论如何都是 C++/CLI。 【参考方案1】:

你不能,不能直接。

向量拥有它们的内容并对它们执行内存管理。这不是你想要的。

您可以将数组中的数据复制到一个新的向量中。

否则,坚持使用指针算法!

【讨论】:

在 C++ 部分,最初我使用数组来保存数据。现在我面临输入数据很大并且在堆栈溢出中占用空间。所以我需要使用向量作为数据容器。

以上是关于将 C# 数组传递给 C++ 向量的主要内容,如果未能解决你的问题,请参考以下文章

将字节数组从 c++ 传递到 c#(单声道)

如何将结构数组从 c++ 传递到 c#?

如何在不使用向量的情况下将数组传递给函数?

将值从向量分配给动态数组(C++)

C++ 通过引用传递向量字符指针

在 C++ 和 C# 之间传递向量结构