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

How can including a header cause a linker error?

本文关键字:错误 链接 何导致 包含标      更新时间:2023-10-16

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

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

我已经检查了它引用的符号确实是在标准库中定义的,甚至在其他地方使用过。它的大意是:

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

覆盖一个不做任何事情的基类实现。

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

有人知道这可能是什么原因吗?为什么它会在另一个文件中导致链接错误?

我用的是VS2012

出现链接器错误的原因是你的头文件说

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

,但是链接器找不到这个函数的定义。如果它确实是在您正在使用的同一个库中定义的,请检查定义中所有内容的语法。可能是打错了。

相关文章: