基于RAII的Timer类构造/析构函数出现未解析外部符号错误求助
RAII Timer类在Visual Studio 2017中遭遇未解析外部符号的解决办法
我刚碰到一模一样的问题——在开发带RAII特性的Timer类时,Visual Studio 2017里突然报构造函数和析构函数的Unresolved external symbol错误,折腾了好一会儿才找到根源,正好和你的情况完全匹配:
问题场景
我有三个文件:main.cpp、Timer.h(声明了Timer类的构造/析构以及RAII相关逻辑)、Timer.cpp(实现了这些成员函数),编译时却提示构造和析构函数的符号找不到。
原因分析
这种错误本质上是链接器找不到函数的实现代码——虽然你在头文件里声明了类的成员,但如果对应的.cpp实现文件没有被包含进项目的编译/链接流程里,链接器就没法把声明和实现对应起来,自然会报未解析符号。
解决步骤
很简单,只需要把Timer.cpp重新添加到你的VS2017项目里就行:
- 在VS的解决方案资源管理器中,右键点击你的项目名称
- 选择「添加」→「现有项」
- 找到并选中
Timer.cpp文件,点击「添加」 - 重新编译项目,错误就会消失
这个问题其实很常见,尤其是当你手动创建了cpp文件但忘了添加到项目,或者不小心把它从项目里移除的时候,链接器就会找不到实现。
内容的提问来源于stack exchange,提问作者AProgrammer
相关产品推荐
相关产品推荐

