从dll导出专用模板函数

时间:2011-04-11 18:45:33

标签: c++ templates dll dllimport dllexport

我有一个模板函数,我在dll的头文件中定义。我不需要导出该函数,因为所有的使用者都会在头文件中读取并且无论如何都具有整个函数。但是,我对该模板的专门化无法在头文件中定义(或者我将获得重定义链接器错误),因此它必须放在源文件中。

导出此功能的常规方法是什么?

template <typename T>
bool functionName(/*params*/){
//.....
}

template<> IMPORTEXPORTMACRO
bool functionName(/*params*/);

并且源文件有

template<>
bool functionName(/*params*/){
//...

IMPORTEXPORTMACRO是其中一个__declspec(dllimport)dllexport

的宏

由于

1 个答案:

答案 0 :(得分:0)

模板的东西确实是占位符。在你使用之前,编译器不会用真实的(函数/类)来代替它。你不能把它放在DLL中。唯一的方法是在头文件中提供它。如果要隐藏实现,请考虑使用类层次结构(运行时多态)