3

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

当我尝试从 .exe 调用符号时,链接器抱怨它无法解析符号(尽管它可以编译对象),但是它说它无法解析的符号的修饰名称完全匹配我的 DLL 中导出符号的修饰名称(如使用依赖项walker 所见) 该问题仅发生在显式专门导出的模板成员函数中。如果我评论对这些的调用,所有其他导出的函数类都将链接正常,因此 .lib 看起来生成正常。

我已尝试更改标题中模板函数的声明以包含“extern”指令,并且它正确指定了惯用的 __declspec(dllimport) ,但这没有区别。

任何想法表示赞赏。谢谢。

4

1 回答 1

5

终于设法找到了这个问题的根源——它是由一个 .lib 引起的,它没有被签入以匹配源代码控制中的 DLL——可能是用不同的编译器版本构建的。对不起任何浪费的时间。...如果一切都失败了,请尝试重建您的库依赖项。

于 2009-10-10T23:25:57.700 回答