C++ - 在Windows上导入明确专用的模板

kdm*_*ler 3 c++ dll templates linkage name-decoration

我在使用VC2008 SP1在Windows上链接程序时遇到了一些麻烦.我明确地专门化DLL中的模板成员函数,它在依赖性walker中正确显示为正确的类型,并且具有正确的参数.

当我尝试从.exe调用符号时,链接器抱怨它无法解析符号(虽然它编译对象ok),但是它所说的无法解析的符号的装饰名称与我的DLL中导出符号的修饰名称(使用依赖性walker查看)只有明确专门的导出模板成员函数才会出现此问题.如果我对这些调用进行注释,则所有其他导出的函数类都将链接正常,因此.lib看起来好像正在生成.

我已经尝试在标题中更改我的模板函数声明以包含'extern'指令,并且它正确地指定了习惯的__declspec(dllimport),但这没有任何区别.

任何想法都赞赏.谢谢.

kdm*_*ler 5

最后设法到达底部 - 它是由一个.lib引起的,它没有得到签入以匹配来自源代码控制的DLL - 可能是用不同的编译器版本构建的.对不起浪费时间....如果所有其他方法都失败了,请尝试重建库依赖项.