使用 std::vector 将C++结构映射到 C#
Map C++ structure with std::vector to C#
在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# 之间传递矢量结构,这为您提供了更多的见解。
相关文章:
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- C++匿名结构作为std::映射值
- 添加静态constexpr成员是否会更改结构/类的内存映射
- C++:映射结构中的结构指针
- 无法添加多个键以映射将结构作为键
- 如何在 c++ 中创建结构向量的映射
- 从另一个 cpp 文件更改结构内、映射键内的变量
- 在映射中使用结构作为键,忽略 == 运算符,误报
- 用于对项目进行分组并将单个项目映射到其他组成员的数据结构
- 使用结构和映射创建priority_queue
- 在无序映射的结构化绑定中推导类型
- 如何将带指针的结构插入到映射中
- C++调用存储在映射结构中的函数指针
- 映射结构也支持排序
- 它无法将 c++ 映射结构编译为 map<A、pair<B、C> >
- 非易失性C++映射结构的备份方案
- 内存映射文件-映射结构而不是文件
- 无法推送到由静态映射<结构创建的队列,队列>
- 将映射结构强制转换为void指针和解引用