如何在没有明确规范的情况下从dll导出模板化类?

Boy*_*yan 13 c++ dll templates

我有一个包含模板类的DLL.有没有明确规范导出它的方法?

Jam*_*kin 17

由于模板的代码通常位于标题中,因此您根本不需要导出函数.也就是说,使用dll的库可以实例化模板.

这是让用户可以自由地使用模板的任何类型的唯一方法,但从某种意义上说,它正在反对dll的工作方式.


Pao*_*sco 5

当编译器找到模板类的实例化(例如 MyTemplate<int>)时,它会生成模板专业化的代码。
因此,所有模板代码都必须放置在头文件中并包含在您要使用它的位置。
如果您想“导出”模板类,只需将代码放入头文件中并将其包含在需要的位置即可。


Las*_*lan 5

您是否正在考虑通过dll导出模板类的实例化?沿线课程:

typedef std::vector<int> IntVec;
Run Code Online (Sandbox Code Playgroud)

有关如何执行此操作的一些讨论:http: //support.microsoft.com/kb/168958

另一种方法是通过针对此模板实例的包装类显式导出您感兴趣的每个函数.那么你不会使用比实际感兴趣的符号更多的符号来混淆dll.

  • 链接不好。我发现这篇文章名为“HOWTO:在类内部和外部导出 STL 组件”。 (2认同)