-1

我可以有 C++ 共享库,其中有返回的导出函数std::vector<t>

4

2 回答 2

4

是的,提供 DLL 和使用它的 C++ 代码

  • 使用相同的 C++ 编译器构建
  • 正在使用相同版本的 STL(这可能对 STL 调试定义也很敏感)
  • 正在使用相同的共享运行时库(即共享、调试与发布、单线程与多线程、相同版本),以便在同一内存堆上分配和释放对象

那么它应该可以正常工作。其中一些可能有一点余地,但总的来说,最好是安全的并尽可能保持一切相同。

于 2012-04-20T11:49:15.020 回答
1

如果 instd::vector<t>t未知类型,即如果您想将 a 存储template在共享库中,而不是某些固定模板实例化,则答案是否定的。

需要一种将类型t注入共享库的方法,但没有。

在代码方面:

// This is NOT possible:
template <typename T>
std::vector<T> something () {...}

// This IS:
std::vector<int> something () {...}
于 2012-04-20T13:49:34.900 回答