卸载系统中的MinGW
- 在cmd中运行
gcc -v根据路径删除minGW文件夹。 - 删除系统环境变量中的mingw
- 运行注册表

- 检查是否存在:

配置cpp环境
本文根据vscode官方网页安装步骤安装:点击此处跳转
前置环境
- Visual Studio Code
- 安装VSCode上的C/C++插件:

安装MinGW-w64工具链
-
跳转MSYS2,下载最新软件:msys2-x86_64-20240113.exe

-
运行安装软件:

-
安装完成

-
点击完成自动跳转到MSYS32的终端窗口
输入:pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
默认设置,敲回车即可

输入y

安装完成

-
添加到环境变量
若为默认设置,应该是:C:\msys64\ucrt64\bin
,这边我是设置在E盘下的

-
测试MinGW是否被正确安装
gcc --version g++ --version gdb --version
VSCode中运行、调试配置
-
建立
helloworld.cpp,内容如下:#include <iostream> #include <vector> #include <string> using namespace std; int main() { // printf("hello!"); vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"}; for (const string& word : msg) { cout << word << " "; } cout << endl; } -
运行helloworld.cpp,点击右上角运行C/C++文件

-
选择第二个g++生成和调试活动文件

-
正常运行输出,并会在工作区生成一个
.vscode/tasks.json

-
对于调试打一个断点进行验证,如下图即为成功,并会在工作区生成一个
.vscode/launch.json:

Bug
期间遇到的最大的问题就是按照官网上的所有步骤操作后,依旧helloworld.cpp无输出,尝试网上搜到的方法如:将Code-runner: Run In Terminal Whether to run code in Integrated Terminal.勾选,也没有作用。
排查许久最后发现(_ZSt28__throw_bad_array_new_lengthv) in DLL (filepath),大概率是由于msys64\ucrt64\bin中的libstdc++-6.dll的动态链接库在别的环境变量中也出现了,导致无法匹配上标准输入输出。(这也解释了为何 printf 可以正常输出,而stdin和sdtout却不行)
解决方案有多种:
- 将
msys64\ucrt64\bin中的libstdc++-6.dll移动到工作文件夹下。(尝试过可行) - 将环境变量中的
msys64\ucrt64\bin移至环境变量的顶端。(尝试过可行)

- 将原本的动态链接换成静态编译(-static)
- 将
libstdc++-6.dll文件放到System32文件夹下。
本文详细描述了如何在VSCode中安装MinGW,配置C++环境,并解决因动态链接库冲突导致的helloworld.cpp输出问题。作者提供了多种解决方案,包括移动动态链接库、调整环境变量顺序和使用静态编译。
1万+






