WIN11+VSCODE搭建c/c++开发环境

article/2025/7/18 14:44:36

搭建c/c++by win11+vscode

前面试过了ubuntu+vscode,macos+vscode,win11+visual studio搭建,本来以为win11+vscode是手到擒来的,没想到颇有些周折。可能解决方案也并不完美,先记录下来,以后有改进再来修改。

  • 安装vscode https://code.visualstudio.com/ (安装时勾选 “添加到 PATH”)
  • 下载并安装 MSYS2,官网:https://www.msys2.org/,下载 msys2-x86_64-xxxx.exe(64位版本)并安装,默认安装路径:C:\msys64。
  • 开始菜单运行MSYS2 UCRT64终端
    • pacman -Syu // 更新客户端
  • 运行完成后会提示关闭客户端,重新打开:
    • pacman -Su //更新
  • 安装 MinGW-w64 GCC(G++)
    MSYS2 提供了多个版本的 GCC:

UCRT64(推荐,兼容性更好)

MINGW64(传统 MinGW-w64)

CLANG64(LLVM Clang 版本)

方法 1:安装 UCRT64 版本的 GCC(推荐)
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
按回车选择默认安装(全部包)。
方法 2:安装 MINGW64 版本的 GCC(传统 MinGW-w64)
pacman -S --needed base-devel mingw-w64-x86_64-toolchain
方法 3:安装 CLANG64 版本的 GCC(LLVM Clang)
pacman -S --needed base-devel mingw-w64-clang-x86_64-toolchain

  • 将 MinGW-w64 添加到系统环境变量
    安装完成后,GCC 的可执行文件(gcc、g++、gdb)位于:

UCRT64: C:\msys64\ucrt64\bin

MINGW64: C:\msys64\mingw64\bin

CLANG64: C:\msys64\clang64\bin
添加环境变量
打开系统环境变量设置:

Win + S 搜索 “编辑系统环境变量” → “环境变量”。

修改 PATH:

在 “系统变量” 中找到 Path,点击 “编辑” → “新建”。

添加你的 MinGW-w64 的 bin 目录(例如 C:\msys64\ucrt64\bin)。

  • 配置 VS Code 使用 MSYS2 的 GCC
    在 VS Code 中打开命令面板(Ctrl+Shift+P),输入 C/C++: Edit Configurations (UI)。

设置:

Compiler path: C:\msys64\ucrt64\bin\g++.exe(根据你的安装路径调整)。

IntelliSense mode: gcc-x64。
修改 tasks.json(编译配置)
按 Ctrl+Shift+P → Tasks: Configure Task → C/C++: g++.exe build active file,修改 args:
{
“version”: “2.0.0”,
“tasks”: [
{
“type”: “cppbuild”,
“label”: “C/C++: g++.exe build active file”,
“command”: “C:\msys64\ucrt64\bin\g++.exe”,
“args”: [
“-fdiagnostics-color=always”,
“-g”,
f i l e " , " − o " , " {file}", "-o", " file","o","{fileDirname}\KaTeX parse error: Expected '}', got 'EOF' at end of input: … "cwd": "{fileDirname}”
},
“problemMatcher”: ["$gcc"],
“group”: {
“kind”: “build”,
“isDefault”: true
},
“detail”: “Generated task by VS Code”
}
]
}

修改 launch.json(调试配置)
按 Ctrl+Shift+D → create a launch.json file → C++ (GDB/LLDB),修改:

{
“version”: “0.2.0”,
“configurations”: [
{
“name”: “g++.exe - Build and debug active file”,
“type”: “cppdbg”,
“request”: “launch”,
“program”: “${fileDirname}\ f i l e B a s e n a m e N o E x t e n s i o n . e x e " , " a r g s " : [ ] , " s t o p A t E n t r y " : f a l s e , " c w d " : " {fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": " fileBasenameNoExtension.exe","args":[],"stopAtEntry":false,"cwd":"{fileDirname}”,
“environment”: [],
“externalConsole”: false,
“MIMode”: “gdb”,
“miDebuggerPath”: “C:\msys64\ucrt64\bin\gdb.exe”,
“setupCommands”: [
{
“description”: “Enable pretty-printing for gdb”,
“text”: “-enable-pretty-printing”,
“ignoreFailures”: true
}
],
“preLaunchTask”: “C/C++: g++.exe build active file”
}
]
}
编译运行:

按 Ctrl+Shift+B 编译。

按 F5 调试运行。
总结:以上是配置c++文件,如果是c文件,修改json中的g++为gcc即可。
遇到的问题及解决:
1、调用外部终端输出: “externalConsole”: false,
这个false改为true后,运行和调试终端会闪退,我的解决是加入getchar()语句。scanf函数语句要加,return 0处也要加。
在这里插入图片描述
2、程序中包含中文运行输出乱码:
这是因为vscode编码为utf-8,windows终端编码默认为GBK,我的解决方案是:

  • win+R,输入intl.cpl打开区域设置
  • 进入 管理–更改系统区域设置
  • 勾选BETA版:使用UNICODE UTF-8提供全球语言支持,重启电脑生效。
  • 此方案的缺点是部分旧版程序可能出现乱码。
    另一解决方案
  • 安装使用 Windows Terminal(管理员身份运行powershell 输入 wsreset -i)
  • 修改 VS Code 的全局设置(settings.json):
  • {
    “terminal.external.windowsExec”: “wt.exe”,
    “terminal.integrated.profiles.windows”: {
    “PowerShell”: {
    “source”: “PowerShell”,
    “args”: ["-NoExit", “-Command”, “chcp 65001”]
    }
    }
    }

http://www.hkcw.cn/article/uaOBRIrmJv.shtml

相关文章

20250530-C#知识:String与StringBuilder

String与StringBuilder string字符串在开发中经常被用到,不过在需要频繁对字符串进行增加和删除时,使用StringBuilder有利于提升效率。 1、String string是一种引用类型而非值类型(某些方面像值类型)使用“”进行两个string对象的…

04-redis-分布式锁-edisson

1 基本概念 百度百科:控制分布式系统之间同步访问共享资源方式。 在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止…

01 Netty简介

文章目录 概要1 Hello World1.1 什么是netty?1.2 Netty 的核心特性1.3 初识 netty 2 Netty 的核心组件2.1 EventLoop 和 EventLoopGroup2.1.1 基本概念2.1.2 与 Channel 关联2.1.3 EventLoopGroup 的实现2.1.4 常用方法 2.2 Channel2.2.1 Channel 的类型2.2.2 Chann…

熵最小化Entropy Minimization (一): 基本认识

文章目录 1. 前置知识Softmax函数信息熵(Entropy) 2. 熵最小化3. 案例理解4. 总结 熵最小化是一种利用未标记数据的策略,其核心思想是鼓励模型对未标记数据做出“自信”的预测,即预测概率分布尽可能尖锐(Peaky&#xf…

jmeter:登录接口的token用于下一个接口

1、创建线程组 -》 添加 登录请求,在登录请求里面添加【正则表达式】 正则表达式提取器 引用名称:newtoken 正则表达式:token"."(*?) 模板: 1 1 1 匹配数字(0代表随机):0 缺省值:null 2、创建…

Leetcode 2005. 斐波那契树的移除子树游戏

1.题目基本信息 1.1.题目描述 斐波那契树是一种按这种规则函数 order(n) 创建的二叉树: order(0) 是空树。 order(1) 是一棵只有一个节点的二叉树。 order(n) 是一棵根节点的左子树为 order(n - 2) 、右子树为 order(n - 1) 的二叉树。 Alice 和 Bob 在玩一种…

类 Excel 数据填报

类 Excel 填报模式,满足用户 Excel 使用习惯 数据填报,可作为独立的功能模块,用于管理业务流程、汇总采集数据,以及开发各类数据报送系统,因此,对于报表工具而言,其典型场景之一就是利用报表模…

TreeMap、TreeSet和HashMap、HashSet

目录 一、TreeMap&TreeSet 1.数据结构: 2.时间复杂度: 3.键/元素: 4.TreeMap基本操作: (与 HashMap 类似,但 put, get, remove 等操作会根据键的顺序进行): 5.TreeMap遍历: 6.TreeSet基本操作 (与 HashSet 类…

电工基础【2】自锁、互锁、正反转电路

04 自锁、正反转电路 我们讲一下这个自锁和正反转。 自锁电路图示例图 加了一个这个 KM1 自锁。加了 KM1 的辅助触头,它怎么实现呢?它怎么就自锁了呢?没加它的时候为什么是点动?加它为什么自锁? 讲解一下。首先我们…

【计算机网络】传输层UDP协议

🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:计算机网络 🌹往期回顾🌹: 【计算机网络】应用层协议Http——构建Http服务服务器 🔖流水不争,争的是滔滔不…

day40python打卡

知识点回顾: 彩色和灰度图片测试和训练的规范写法:封装在函数中展平操作:除第一个维度batchsize外全部展平dropout操作:训练阶段随机丢弃神经元,测试阶段eval模式关闭dropout 作业:仔细学习下测试和训练代码…

2022-2023-2-移动机器人设计与实践-期末B

2022-2023-2-移动机器人设计与实践-期末A-CSDN博客 本文介绍了《移动机器人设计与实践》课程期末考试试卷B卷的内容与参考答案。试卷包含分析题、设计题、实践题和编程题四部分,总分100分。分析题考察学生对空中、水面和地上三种移动机器人模型运动机制及应用场景的…

DM8部分函数的功能分别举例说明

DM8部分函数的功能分别举例说明 1 环境说明2 函数功能使用示例2.1 AVG OVER2.2 COUNT OVER2.3 MIN OVER,MAX OVER,SUM OVER2.4 DENSE_RANK2.5 ROW_NUMBER2.6 FIRST2.7 LAG2.8 WM_CONCAT 3 更多达梦数据库全方位指南:安装 优化 与实战教程 1 环境说明 Cp…

大语言模型 24 - MCP 自动操作 提高模型上下文能力 Cursor + Sequential Thinking Server Memory

点一下关注吧!!!非常感谢!!持续更新!!! Java篇: MyBatis 更新完毕目前开始更新 Spring,一起深入浅出! 大数据篇 300: Hadoop&…

【多线程初阶】线程状态 线程安全

文章目录 1.线程状态线程的状态及状态转移 2.多线程带来的风险 - 线程安全(重点)线程安全问题产生的原因如何解决线程安全问题 1.线程状态 EE的第一篇总览中有提到过 进程的状态 1.就绪 2.阻塞 这都是从操作系统的视角看待的 Java线程也是对操作系统线程的封装,针对状态这里…

Python 序列的修改、散列和切 片(Vector类第4版:散列和快速等值 测试)

Vector类第4版:散列和快速等值测试 我们要再次实现__hash__ 方法。加上现有的__eq__ 方法,这会把 Vector 实例变成可散列的对象。 示例 9-8 中的__hash__ 方法简单地计算 hash(self.x) ^ hash(self.y)。这一次,我们要使用^(异或…

ai姿势项目

链接:https://pan.baidu.com/s/1dGSt7wEk8w6O7zlgme3CUQ?pwd=x60y 提取码:x60y --来自百度网盘超级会员V2的分享 配置环境 conda create -n 环境名称 python=3.8conda activate 环境名称 如果你运行程序的话会报错 ModuleNotFoundError: No module named mediapipe 进…

LoRA:高效微调预训练模型的利器

LoRA(Low-Rank Adaptation) 的思想:冻结预训练模型权重,将可训练的低秩分解矩阵注入到Transformer架构的每一层(也可单独配置某一层)中, 从而大大减少在下游任务的可训练参数量。 核心原理 对于预训练权重矩阵 ,LoRA限制了其更新…

越界检测算法AI智能分析网关V4打造多场景化的应用解决方案

一、方案概述 随着社会发展,传统安防系统在复杂环境下暴露出误报率高、响应慢等短板。AI智能分析网关V4依托先进算法与强大算力,实现周界区域精准监测与智能分析,显著提升入侵防范效能。本方案通过部署该网关及其越界检测功能,为…

使用SkiaSharp打造专业级12导联心电图查看器:性能与美观兼具的可视化实践

前言 欢迎关注dotnet研习社,今天我们研究的Google Skia图形库的.NET绑定SkiaSharp图形库。 在医疗软件开发领域,心电图(ECG)数据的可视化是一个既有挑战性又极其重要的任务。作为开发者,我们需要创建既专业又直观的界面来展示复杂的生物医学…