c# - 将带有 std::vector 的 C++ 结构映射到 C#

标签 c# c++ dll

在 C++ Dll 中我有这段代码:

struct Bar 
{
   std::vector<double> a;
   std::vector<double> b;
}

std::vector<Bar> t;

如何将 t 映射为可从 C# 访问。

例如,我在 C++ Dll 中创建了这个

__declspec(dllexport) void ReleaseNet(std::vector<Bar> t)
{
    someObject.setData(t);
};

我需要从 C# 向此方法传递数据。

最佳答案

我不知道微软是否对 STL 容器有某种映射,但一般来说,在 api 边界上使用 STL 是一个很大的“不行不行”,因为你的 vector 类在另一边可能有不同的大小。 (一个例子是调试中的 visual studio 为调试目的向结构添加了一些数据)

如果您想要映射的只是一个 vector ,那么可以肯定的是 vector 是一个连续的内存块。所以您可以将其视为一个数组。

Passing vector struct between C++ and C#这给了你更多的洞察力。

关于c# - 将带有 std::vector 的 C++ 结构映射到 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34993699/

相关文章:

c# - Entity Framework Core 获取没有相关实体的实体

c# - 将 Unicode 数据从 xml 字符串插入到 Datatable

c++ - 如何使用参数选项创建函数?

c++ - 传递给存储常量引用的成员的临时对象的生命周期

C程序中的C++ dll

C# 文本框自动完成 : Limit to ~50 suggestions

c# - 在 Windows 中检测耳机

c++ - 在 C++17 中使用 noexcept 的 std::function

c# - 从 .NET 网络应用程序中删除 ReportViewer,仍在寻找 ReportViewer dll

c++ - LoadLibrary 采用 LPCTSTR