我有两个相当不相关的cpp文件,我们称之为simplify.cpp
和migrate.cpp
,以及另一个库中的头文件server.h
。
当我尝试将server.h
包含到simplify.cpp
中时,我在两个cpp文件中都收到链接器错误LNK2001未解析的外部符号。
我已经检查过它所引用的符号确实是在库中定义的,它甚至在其他地方使用过。这是有效的:
SomeObject::SetValue( const std::shared_ptr<Value>& value )
它会覆盖不执行任何操作的基类实现。
我甚至不确定这些是否是相关的,但更多信息:基类实现在其标题中定义(只是空括号),而SomeObject
的定义在其cpp文件中。继承相当深入,涉及一些模板,但这从来就不是问题。
有谁知道这可能是什么原因?为什么它会在另一个我甚至没有触及的文件中导致链接错误?
我正在使用VS2012。
答案 0 :(得分:0)
存在链接器错误的原因是因为您的头文件已经说过
“函数SomeObject::SetValue( const std::shared_ptr<Value>& value )
存在,某处”
但是链接器找不到此函数的定义。如果它确实在您使用的同一个库中定义,请检查定义中所有内容的语法。也许这是由于一个错字。