VS Code编译C++项目出现undefined reference链接错误求助
问题分析与解决
从编译日志可以看到,当前执行的编译命令仅对Test.cpp进行了编译,没有将实现testFunc()的Other.cpp纳入编译流程。链接阶段需要找到函数的具体实现代码,但因为Other.cpp没有被编译成目标文件,所以链接器抛出了undefined reference to testFunc()错误。而Eclipse会自动扫描项目内所有源文件并加入编译,因此能正常运行。
解决方法
方法1:手动执行完整编译命令
在项目目录的终端中运行以下命令,同时编译两个源文件:
g++ -g Test.cpp Other.cpp -o Test.exe
方法2:配置VS Code的编译任务(tasks.json)
- 按
Ctrl+Shift+B打开编译任务面板,选择「创建tasks.json文件」,再选择「g++.exe 生成活动文件」。 - 修改生成的
tasks.json,在args数组中添加Other.cpp(如果有更多源文件,同理添加):
{ "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: g++.exe 生成活动文件", "command": "C:\\MinGW\\bin\\g++.exe", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "Other.cpp", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "编译器: C:\\MinGW\\bin\\g++.exe" } ] }
修改后,再次按Ctrl+Shift+B执行编译,就能正确链接所有源文件了。
内容的提问来源于stack exchange,提问作者Johannes K.
相关产品推荐
相关产品推荐

