2

我有一个模板函数,我在 dll 的头文件中定义。我不需要导出函数,因为所有消费者都会读取头文件并拥有整个函数。但是,我有一个无法在头文件中定义的模板的特化(或者我会得到重新定义链接器错误),所以它必须放在源文件中。

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

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

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

并且源文件有

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

IMPORTEXPORTMACRO是那些宏之一,要么是__declspec(dllimport)要么dllexport

谢谢

4

1 回答 1

0

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

于 2011-08-06T08:42:43.667 回答