VS Code使用MSYS2编译多文件C++项目出现undefined reference错误如何解决
问题原因
你按下的Ctrl+Alt+N是Code Runner插件的默认运行快捷键,不会触发你在tasks.json中配置的编译规则,默认只会单独编译当前打开的main.cpp文件,定义了pls函数的其他.cpp文件没有参与编译链接,因此链接器报错找不到对应函数定义。
从你贴出的运行日志也可以验证:实际执行的编译命令是g++ main.cpp -o main,没有包含其他源文件。
解决方法
- 方案1:修改Code Runner的C++编译规则
打开VS Code设置,搜索code-runner.executorMap,点击进入json编辑页面,找到cpp对应的配置项,将默认值替换为:
该配置会自动编译当前目录下所有.cpp文件,同时启用你需要的C++17标准。"cpp": "cd $dir && g++ -std=c++17 *.cpp -o $fileNameWithoutExt && $dir$fileNameWithoutExt" - 方案2:改用你配置的tasks.json编译
打开VS Code键盘快捷键面板(快捷键Ctrl+K Ctrl+S),搜索「Tasks: Run Build Task」,将该操作的快捷键修改为Ctrl+Alt+N,覆盖Code Runner的原有快捷键即可,后续按下快捷键就会自动调用你写的编译规则。
额外优化建议
你现有tasks.json的编译参数不需要加入.h头文件,头文件会自动被对应的.cpp文件引入,直接删掉args配置中的"${workspaceFolder}\\*.h"即可,避免出现不必要的编译警告。
内容的提问来源于stack exchange,提问作者Roman Belyy
相关产品推荐
相关产品推荐

