在 DLL 边界上公开 STL 容器不是一个好主意,而且通常是不可能的(请参阅这个答案了解为什么,以及这个关于在 dll 边界上公开 std::list 的答案)。我需要能够在使用不同(VC08/VC10+)编译器编译的 DLL 和 EXE 之间传递数据;此 Q仅处理相同的所有内容。
暴露它们的最佳方法是什么?向量与列表有点不同,因为内存保证是连续的,所以如果我只需要一个双精度的 const 向量,我可以只提供指向 dll 中函数块的开始和结束指针吗?dll 还需要返回一些结构,例如向量数组。
我想知道一个包含开始和结束指针的结构:
template <typename T>
struct vecWrapper<T> {
T* begin;
T* end;
}
// in the dll
int func(vecWrapper<double> numbers);
这会是明智的吗?大概从函数返回的任何东西都需要一个析构函数(在 dll 端)来破坏它指向的东西。