如何包含标头导致链接器错误?

时间:2015-07-10 21:40:04

标签: c++ visual-studio-2012 linker

我有两个相当不相关的cpp文件,我们称之为simplify.cppmigrate.cpp,以及另一个库中的头文件server.h

当我尝试将server.h包含到simplify.cpp中时,我在两个cpp文件中都收到链接器错误LNK2001未解析的外部符号。

我已经检查过它所引用的符号确实是在库中定义的,它甚至在其他地方使用过。这是有效的:

SomeObject::SetValue( const std::shared_ptr<Value>& value )

它会覆盖不执行任何操作的基类实现。

我甚至不确定这些是否是相关的,但更多信息:基类实现在其标题中定义(只是空括号),而SomeObject的定义在其cpp文件中。继承相当深入,涉及一些模板,但这从来就不是问题。

有谁知道这可能是什么原因?为什么它会在另一个我甚至没有触及的文件中导致链接错误?

我正在使用VS2012。

1 个答案:

答案 0 :(得分:0)

存在链接器错误的原因是因为您的头文件已经说过

“函数SomeObject::SetValue( const std::shared_ptr<Value>& value )存在,某处”

但是链接器找不到此函数的定义。如果它确实在您使用的同一个库中定义,请检查定义中所有内容的语法。也许这是由于一个错字。