从dll中导出专用模板函数

export specialized template function from a dll

本文关键字:函数 专用 dll      更新时间:2023-10-16

我有一个模板函数,我在dll的头文件中定义。我不需要导出函数,因为所有的消费者都将读取头文件并拥有整个函数。然而,我有一个模板的专门化,它不能在头文件中定义(否则我会得到重定义链接器错误),所以它必须在源文件中。

导出该函数的正常方式是什么?

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

和源文件有

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

IMPORTEXPORTMACRO是其中一个要么是__declspec(dllimport)要么是dllexport的宏

谢谢

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