首页 > 其他分享 >VS Code/Code-Runner编译C语言遇到undefined reference to XXX的一种解决办法

VS Code/Code-Runner编译C语言遇到undefined reference to XXX的一种解决办法

时间:2024-11-08 14:44:47浏览次数:4  
标签:文件 code undefined reference runner 编译 Code fileNameWithoutExt dir

背景

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

参考

标签:文件,code,undefined,reference,runner,编译,Code,fileNameWithoutExt,dir
From: https://www.cnblogs.com/JavicxhloWong/p/18535049

相关文章

  • Codeforces 909 A-F
    CF909题解题目链接ABCDEF难度:红黄绿蓝绿紫题解A题目翻译:给定两个字符串,求字典序最小的“两字符串非空前缀拼接形成的字符串”。算法标签:贪心题目分析:字典序最小,即从左往右依次比较字符,直到一方不剩字符或两字符不同。因此想到贪心。由于前缀非空,因此在前一字......
  • 代码随想录算法训练营第二十一天| leetcode669. 修剪二叉搜索树、leetcode108.将有序
    1leetcode669.修剪二叉搜索树题目链接:669.修剪二叉搜索树-力扣(LeetCode)文章链接:代码随想录视频链接:你修剪的方式不对,我来给你纠正一下!|LeetCode:669.修剪二叉搜索树_哔哩哔哩_bilibili思路:目前想的是分三种情况,第一种情况就是这个数删除左边全部,第二种删除右边的全部,第......
  • vscode配置xdebug断点调试thinkphp
    vscode配置xdebug断点调试thinkphp其实和配置其他php框架的断点调试一样,步骤如下:下载xdebug,重命名为php_xdebug.dll并移动到php.ini目录;(不知道下载那个版本可以通过xdebug官网提供的在线查询工具查询。https://xdebug.org/wizard在安装的主机上执行php-i,将输入的结果粘贴到网......
  • 新建流程隐藏指定流程(建模+api+ecode)
    ecode代码`//功能总开关letenable=true;letlist=[];$.ajax({type:'GET',url:'/api/xiangxin/Multiple/HideProcess',success:function(res){res.data.map((i)=>{//console.log('lc:',i.lc);list.push(i.lc);})}})letpd;//判......
  • 代码随想录算法训练营第二十天|leetcode235. 二叉搜索树的最近公共祖先、leetcode701.
    1leetcode235.二叉搜索树的最近公共祖先题目链接:235.二叉搜索树的最近公共祖先-力扣(LeetCode)文章链接:代码随想录视频链接:二叉搜索树找祖先就有点不一样了!|235.二叉搜索树的最近公共祖先_哔哩哔哩_bilibili思路:用之前一样的方法,哈哈哈哈哈,好处就是做出来了,但是我觉得需......
  • LeetCode 2544[交替数字和]
    题目链接LeetCode2544[交替数字和]详情实例提示题解思路依次求出各位数字,然后进行计算循环找出各位数字:(循环体如下)  将数字对10取余得到对应位数的数字,加入到容器numVec  数字除以10,得到新的数字,此数字是不包含已获取数字的位数循环退出的条件:数字等于0循环......
  • LeetCode 2535[数组元素和与数字和的绝对差值]
    题目链接LeetCode2535[数组元素和与数字和的绝对差值]详情实例提示题解思路遍历容器,依次求出数字和与元素和,然后求差值:通过getSun函数,求取元素的数字和 getSun函数的实现:  将其对10取余操作,获取的余数即为当前位的数字  然后再除以10,继续对其进行10的取......
  • Html5QRCode扫描条形码+二维码
    代码:<html><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width,initial-scale=1.0"&......
  • LeetCode HOT 100 记录
    目录230.二叉搜索树中第K小的元素-力扣(LeetCode)199.二叉树的右视图-力扣(LeetCode)230.二叉搜索树中第K小的元素-力扣(LeetCode)相当于把二叉搜索树从小到大排序,而二叉搜索树有一个特点,就是顺序左子树<根节点<右子树,因此可以考虑使用中序遍历/***Definitionfo......
  • langchain agent with tools sample code
    importasynciofromlangchain_openaiimportChatOpenAIfromlangchain.agentsimporttoolfromlangchain_core.promptsimportChatPromptTemplate,MessagesPlaceholderfromlangchain.agents.format_scratchpad.openai_toolsimport(format_to_openai_tool_me......