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

浙公网安备 33010602011771号