You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSCode终端无法运行C++代码问题求助

解决VSCode Code Runner运行C++弹出打开方式的问题

问题场景

使用VSCode+MinGW+Code Runner运行C++代码,开启「在终端运行」后,执行命令:

PS C:\Users\nothu\Projects> cd "c:\Users\nothu\Projects" ; if ($?) { g++ 8.UserInputs.cpp -o 8.UserInputs } ; if ($?) { .\8.UserInputs }

原本可正常接收输入,突然弹出选择文件打开方式的窗口,选择后仍无法运行。代码本身无问题,已尝试重启VSCode、重装扩展、新建/重命名文件、重置settings.json等操作,均未解决。

解决步骤

1. 修复Windows的EXE文件关联

这是最常见的触发原因——系统误修改了.exe可执行文件的默认打开方式:

  • 按下Win+R,输入regedit打开注册表编辑器
  • 定位到HKEY_CLASSES_ROOT\.exe,确保默认值为exefile
  • 再定位到HKEY_CLASSES_ROOT\exefile\shell\open\command,默认值必须是"%1" %*(注意引号和空格格式)
  • 若值不正确,右键修改;权限不足时,右键对应注册表项选择「权限」,给自己添加完全控制权限后再修改

2. 调整Code Runner的执行命令

可能是Code Runner默认命令未添加.exe后缀,导致系统无法识别可执行文件:

  • 打开VSCode设置(快捷键Ctrl+,),搜索Code Runner: Executor Map,点击「编辑 in settings.json」
  • 找到"cpp"对应的命令,修改为:
    "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe"
    
    核心是编译时生成带.exe后缀的可执行文件,运行时明确调用后缀齐全的文件

3. 手动验证编译运行

先排除Code Runner的配置问题,手动在终端操作验证:

  • 打开项目目录,右键选择「在终端中打开」(PowerShell)
  • 执行编译命令:g++ 8.UserInputs.cpp -o 8.UserInputs.exe
  • 再执行运行命令:.\8.UserInputs.exe
    如果手动操作能正常运行,说明问题出在Code Runner配置,按步骤2调整即可;如果手动也不行,优先解决EXE文件关联问题,再检查MinGW环境变量(Win+R输入cmd,执行g++ --version能输出版本号即环境正常)

附用户提供的代码

#include <iostream>

    // cout << (insertion operator)
    // cin >> (extraction operator)

int main(){

    std::string name;
    int age;
    std::string food;
    std::string hobby;

    std::cout << "What's your full name?: ";
    std::cin >> name;
    //std::getline (std::cin >>std::ws, name);
    std::cout << "What's your age?: ";
    std::cin >> age;

    std::cout << "What's your favorite food?: ";
    std::cin >> food;

    std::cout << "What's a hobby of yours you love doing?: ";
    std::cin >> hobby;
    //std::getline (std::cin >>std::ws, hobby);

    std::cout << "Hello " << name << "!" <<std::endl;
    std::cout << "You are " << age << " years old!" <<std::endl;
    std::cout << "Your favorite food is " << food << "!" <<std::endl;
    std::cout << "A hobby you love doing is " << hobby << "! That's a good one!";

    return 0;
}

内容的提问来源于stack exchange,提问作者ZephyrCodes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 22:41:06