You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++编译报错undefined reference to `Game::play()'问题求助

报错原因

这个错误是典型的C++链接阶段错误,产生的根本原因:

  • 编译时编译器通过Game.h找到了play()的函数声明,语法校验通过可以生成main函数的目标文件
  • 链接器需要把所有用到的函数实现拼接成可执行文件时,找不到Game::play()对应的实现代码,所以抛出未定义引用报错。

你的头文件、实现文件、main文件的代码逻辑都没有语法错误,问题出在编译命令或者项目构建配置上,没有把Game.cpp纳入编译链接范围。


解决方法

1. 命令行编译场景

如果你是直接用g++/clang++命令行编译,不要只编译main.cpp,要把Game.cpp一起加进去:

# 错误的编译命令(只编译main.cpp)
g++ main.cpp -o game

# 正确的编译命令(同时编译main.cpp和Game.cpp)
g++ main.cpp Game.cpp -o game

执行正确的编译命令后就能生成正常可执行文件。

2. IDE/CMake构建场景

  • 如果用Visual Studio、CLion等IDE:要确保Game.cpp已经被添加到你的项目源码目录里,IDE才会自动纳入编译流程
  • 如果用CMake构建:要在add_executable的配置里同时加入main.cpp和Game.cpp,示例配置:
add_executable(game main.cpp Game.cpp)

补充验证

如果按上面操作后还是报错,可以先清理之前生成的临时目标文件(.o后缀文件、build目录缓存等),再重新编译,避免旧缓存影响。

内容的提问来源于stack exchange,提问作者migo101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:15:07