vscode 无法运行c++代码,Run Code之后生成一个没有后缀的文件

本文记录了在Visual Studio Code (VSCode) 中使用CodeRunner插件运行C++代码时遇到的问题:编译器生成的不是.exe文件导致无法运行。作者发现原配置命令在Windows环境下不适用,通过分析并修改CodeRunner的ExecutorMap设置,将命令改为生成.exe文件,成功解决了问题。这个过程强调了解决问题的重要性以及自我分析的能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

想要在vscode中使用code runner来运行c++代码。 电脑已经安装了c++编译器,vscode中也安装了C/C++ 和 Code Runner这两个插件

在这里插入图片描述

问题描述

在 Run Code时,编译器生成了一个没有后缀的文件,而不是exe文件,从而无法运行程序。

文件管理器下看到是这样的
在这里插入图片描述

原因分析:

通过分析之后发现是编译的命令不对
原来的命令:

cd "f:\C++Code\wangdao\" ; if ($?) { g++ 2.2--1.cpp -o 2.2--1 } ; if ($?) { .\2.2--1 }

正确的命令:

cd "f:\C++Code\wangdao\" ; if ($?) { g++ 2.2--1.cpp -o 2.2--1.exe } ; if ($?) { .\2.2--1.exe }

解决方案:

  • 打开vscode的设置,在搜索框输入Code-runner: Executor Map,打开settings.json文件

在这里插入图片描述
在这里插入图片描述

对cpp那一行进行修改,修改内容:

"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe",

接下来重新Run Code就搞定了。


比较一下两条指令的区别

"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe",

总结

  • 其实这个问题还是困扰了我很久,一开始寻找问题的方向就不对,在网上搜索了很多内容还是没有找到相似的案例。有时候,自己主动去分析问题,或许也能够找到解决问题的关键所在呢,毕竟在分析的过程中,自己解决问题的这种思维能力也在培养。
  • 其实我也不清楚为什么我安装的插件Code Runner配置的cpp编译指令是这样的?这条指令好像在linux下可以执行(暂时还没有去验证),但是在windows下看来是不行的。
    在这里插入图片描述
### 配置 VS Code 编译 C/C++ 程序 为了在 Ubuntu 上配置 Visual Studio Code (VS Code) 来编译 C/C++ 程序并生成 `.out` 文件,需完成几个关键步骤。 #### 安装必要的工具链 确保已安装 GCC 编译器,在终端执行命令 `sudo apt-get install gcc g++`[^3]。这一步骤会安装 GNU Compiler Collection 及其支持 C++ 的部分。 #### 安装 VS Code 和扩展包 通过应用商店或其他方式获取最新版本的 VS Code 后,启动应用程序进入插件管理界面。搜索并安装下列三项重要组件: - **C/C++**: 提供 IntelliSense 功能以及调试能力。 - **Code Runner**: 支持多种编程语言的一键运行功能。 - **C/C++ Compile Run**: 增强对 C/C++ 项目的构建流程的支持[^2]。 #### 创建和编辑源文件 创建一个新的工作区或者打开现有项目目录作为工作空间。新建或导入 C 或者 C++ 源码文件(`.cpp`, `.c`),例如命名为 `main.cpp`. #### 设置任务定义 为了让 VS Code 能够识别如何处理这些特定类型的文件,需要设置好相应的任务描述符。可以通过点击菜单栏中的 “Terminal -> Configure Default Build Task...”,接着选择 `"Create a new build task"` 并选取适合的语言环境模板来实现这一点。对于 C++ 应该选用类似于 `g++.exe build active file` 这样的预设项。 下面是一个简单的 JSON 格式的任务配置例子: ```json { "version": "2.0.0", "tasks": [ { "label": "build hello world", "type": "shell", "command": "/usr/bin/g++", "args": [ "-g", "${file}", "-o", "${workspaceFolder}/bin/${fileBasenameNoExtension}.out" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"], "detail": "Generated task to compile the current file." } ] } ``` 此脚本指定了当触发构建操作时所使用的编译指令及其参数,其中 `${file}` 表示当前正在编辑的那个源代码文件名;`${workspaceFolder}` 是整个工程所在的根路径;而 `${fileBasenameNoExtension}` 则代表去掉后缀的名字用于命名最终输出的目标可执行程序(.out)[^1]. #### 执行编译过程 现在可以利用快捷键 Ctrl+Shift+B (MacOS 用户则是 Command+Shift+B)快速发起一次完整的编译动作。如果一切顺利的话,则会在指定位置找到对应的二进制文件即带有 .out 结尾的结果文档。 #### 测试与验证 最后一步就是确认能否正常加载并执行刚才产生的目标文件了。可以直接双击它或是借助于命令行下的 ./filename.out 形式来进行测试。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值