使用 std::vector 将C++结构映射到 C#

Map C++ structure with std::vector to C#

本文关键字:映射 结构 std vector 使用 C++      更新时间:2023-10-16

在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 是一个很大的"不",因为你的向量类在另一边可能有不同的大小。(一个例子是调试中的Visual Studio向结构中添加了一些数据以进行调试)

如果你想要映射的只是一个向量,那么可以肯定的是,向量是一个连续的内存块。所以你可以把它当作一个数组。

在 C++ 和 C# 之间传递矢量结构,这为您提供了更多的见解。