C++ STL 或模板和 DLL

C++ STL or Template and DLL

本文关键字:DLL STL C++      更新时间:2023-10-16

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

是的

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

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

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

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

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

在代码方面:

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