VS Code/Code-Runner编译C语言遇到undefined reference to XXX的一种解决办法
背景
用VS Code编译一个C语言编写的项目文件,这个项目除main文件外还有些被引用的C文件,如果不做相关配置的话,运行会报错:
即编译时找不到被引用的这些文件,从而报错。
解决办法
我是使用code-runner这个插件跑的,所以这里只写关于用这种方式运行代码的解决办法。
首先查看.vscode/ 配置文件夹下是否有settings.json
;
如果有则看是否有配置对象叫做code-runner.executorMap
(code-runner.executorMap用于配置不同编程语言的执行命令);
如果有则在其中添加一条设置:
复制"c": "cd $dir && g++ -o $fileNameWithoutExt *.c && $dir$fileNameWithoutExt"
这条命令的含义如下:
cd $dir
: 切换到当前文件所在的目录。其中$dir是表示当前文件所在的目录路径的变量g++ -o $fileNameWithoutExt *.c
:
g++
表示使用g++编译器进行编译。
-o $fileNameWithoutExt
表示指定输出文件的名称为当前文件名。例如,如果当前文件是main.c,则输出文件名为main。
*.c
表示编译当前目录下所有的 C 源文件。(这个是关键,之前会存在找不到引用的一个问题就是其他文件没有被编译)$dir$fileNameWithoutExt
:
运行生成的可执行文件。$dir
表示文件所在目录,$fileNameWithoutExt
是不包含扩展名的文件名。
配置保存后,再运行则没有未定义引用的报错了。
如果没有settings.json
文件或者code-runner.executorMap
字段,可以这样:
在插件栏里,找到code-runner,点击齿轮,进入设置页面:
找到这一段,点击
如果之前没有settings.json
文件的话这时会生成,并自动添加code-runner.executorMap
字段,然后如上文所述添加命令即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具