vscode配置c++环境(MinGW)

本文详细描述了如何在VSCode中安装MinGW,配置C++环境,并解决因动态链接库冲突导致的helloworld.cpp输出问题。作者提供了多种解决方案,包括移动动态链接库、调整环境变量顺序和使用静态编译。

卸载系统中的MinGW

  1. 在cmd中运行gcc -v根据路径删除minGW文件夹。
  2. 删除系统环境变量中的mingw
  3. 运行注册表
    在这里插入图片描述
  • 检查是否存在:![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e23fcf840a274ec980512d6df609691f.pn

配置cpp环境

本文根据vscode官方网页安装步骤安装:点击此处跳转

前置环境

  1. Visual Studio Code
  2. 安装VSCode上的C/C++插件:
    在这里插入图片描述

安装MinGW-w64工具链

  1. 跳转MSYS2,下载最新软件:msys2-x86_64-20240113.exe
    在这里插入图片描述

  2. 运行安装软件:
    在这里插入图片描述

  3. 安装完成
    在这里插入图片描述

  4. 点击完成自动跳转到MSYS32的终端窗口
    输入: pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain 输入pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain

    默认设置,敲回车即可
    在这里插入图片描述

    输入y
    在这里插入图片描述
    安装完成
    在这里插入图片描述

  5. 添加到环境变量
    若为默认设置,应该是:C:\msys64\ucrt64\bin
    ,这边我是设置在E盘下的
    在这里插入图片描述

  6. 测试MinGW是否被正确安装

    gcc --version
    g++ --version	
    gdb --version
    

VSCode中运行、调试配置

  1. 建立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;
    
    	}
    
  2. 运行helloworld.cpp,点击右上角运行C/C++文件
    在这里插入图片描述

  3. 选择第二个g++生成和调试活动文件
    在这里插入图片描述

  4. 正常运行输出,并会在工作区生成一个.vscode/tasks.json
    在这里插入图片描述

  5. 对于调试打一个断点进行验证,如下图即为成功,并会在工作区生成一个.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 可以正常输出,而stdinsdtout却不行)

解决方案有多种:

  1. msys64\ucrt64\bin中的libstdc++-6.dll移动到工作文件夹下。(尝试过可行)
  2. 将环境变量中的msys64\ucrt64\bin移至环境变量的顶端。(尝试过可行)
    在这里插入图片描述
  3. 将原本的动态链接换成静态编译(-static)
  4. libstdc++-6.dll文件放到System32文件夹下。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值