【发布时间】:2011-08-03 07:32:58
【问题描述】:
我有一个模板函数,我在 dll 的头文件中定义。我不需要导出函数,因为所有消费者都会读取头文件并拥有整个函数。但是,我有一个不能在头文件中定义的模板的特化(或者我会得到重新定义链接器错误),所以它必须放在源文件中。
这个函数的正常导出方式是什么?
template <typename T>
bool functionName(/*params*/){
//.....
}
template<> IMPORTEXPORTMACRO
bool functionName(/*params*/);
源文件有
template<>
bool functionName(/*params*/){
//...
IMPORTEXPORTMACRO 是__declspec(dllimport) 或dllexport 的宏之一
谢谢
【问题讨论】:
-
你不能把专门的函数内联吗?从而避免标题错误。
-
然后我从多次定义的函数中得到错误。
-
你能简单地展示你的代码吗(你不需要展示整个实现或任何东西)。当我说内联时,您是在指定
inline对吗? -
@bdwain :如果您将函数实际标记为
inline,即使用inline关键字装饰它,则不会。 -
pastebin.com/fVyJdt33前2个在header里,最后一个在源文件里
标签: c++ templates dll dllimport dllexport