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

时间:2016-01-25 13:22:09

标签: 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#我需要将数据传递给这个方法。

1 个答案:

答案 0 :(得分:1)

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

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

Passing vector struct between C++ and C#这可以让您更深入了解。