我在使用 VC2008 SP1 在 Windows 上链接程序时遇到了一些麻烦。我在 DLL 中明确专门化了一个模板成员函数,它正确地显示为依赖 walker 中的导出符号,具有正确的类型和正确的参数。
当我尝试从 .exe 调用符号时,链接器抱怨它无法解析符号(尽管它可以编译对象),但是它说它无法解析的符号的修饰名称完全匹配我的 DLL 中导出符号的修饰名称(如使用依赖项walker 所见) 该问题仅发生在显式专门导出的模板成员函数中。如果我评论对这些的调用,所有其他导出的函数类都将链接正常,因此 .lib 看起来生成正常。
我已尝试更改标题中模板函数的声明以包含“extern”指令,并且它正确指定了惯用的 __declspec(dllimport) ,但这没有区别。
任何想法表示赞赏。谢谢。