在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#我需要将数据传递给这个方法。
答案 0 :(得分:1)
我不知道微软是否对STL容器有某种映射,但一般来说,在api边界上使用STL是一个很大的“不行”,因为你的矢量类在另一边可能有不同的大小。 (一个例子是调试中的visual studio在结构中添加了一些数据以用于调试目的)
如果你想要映射的只是一个向量,那么可以肯定的是,向量是一个连续的内存块。所以你可以把它当成一个数组。
Passing vector struct between C++ and C#这可以让您更深入了解。