包含标头如何导致链接器错误
How can including a header cause a linker error?
我有两个相当不相关的cpp文件,我们称它们为simplify.cpp
和migrate.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 )
存在,某处"
,但是链接器找不到这个函数的定义。如果它确实是在您正在使用的同一个库中定义的,请检查定义中所有内容的语法。可能是打错了。
相关文章:
- Netbeans 10:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- CMake 错误:链接器命令失败,退出代码为 1 和 cpp.o 文件
- clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) - 体系结构的未定义符号 x86_64:
- 如何修复 clang: 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- Android NDK.Build命令失败.未定义的引用.clang++:错误:链接器命令失败,退出代码为1
- 使用cmake错误链接boost日志
- 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用):在 Macbook 上
- C++ XCODE ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -
- clang:错误:链接器命令失败,C++代码中的退出代码为 1(使用 -v 查看调用)
- 静态库中的 g++ 错误链接函数
- 未定义的参考错误链接天然函数Android
- C++编译错误:ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v
- QT Q_PROPERTY错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- OSX MOJAVE -LD:架构X86_64 clang找不到符号:错误:链接器命令失败,出口代码1
- C 错误链接器命令失败了出口代码1(使用-V查看调用)
- LD:架构x86_64 clang找不到符号:错误:链接器命令失败,出口代码1(使用-v to See
- 聚输出错误 - 链接列表
- Xcode链接器错误:链接器命令失败,退出代码为1(使用-v查看调用)
- 尝试构建C DLIB示例无法与数百个未定义的参考错误链接