在 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/