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字段,然后如上文所述添加命令即可。

参考

posted @   JavicxhloWong  阅读(285)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示
主题色彩