我在使用VC2008 SP1在Windows上链接程序时遇到了一些麻烦。 我明确地专门化DLL中的模板成员函数,它在依赖性walker中正确显示为正确的类型,并且具有正确的参数。
当我尝试从.exe调用符号时,链接器抱怨它无法解析符号(尽管它编译对象ok),但是符号的装饰名称表示它无法解析与我的DLL中导出的符号的装饰名称完全匹配(使用依赖性walker查看)只有明确专门的导出模板成员函数才会出现此问题。如果我对这些调用进行注释,则所有其他导出函数类都将链接正常,因此.lib看起来好像正在生成。
我尝试在标题中更改模板函数的声明以包含'extern'指令,并且正确指定了习惯的__declspec(dllimport),但这没有区别。
任何想法都赞赏。感谢。
答案 0 :(得分:5)
最后设法到达底部 - 它是由.lib引起的,没有签入以匹配来自源代码控制的DLL - 可能使用不同的编译器版本构建。 对不起浪费时间。 ...如果所有其他方法都失败了,请尝试重建库依赖项。