卸载系统中的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文件夹下。
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐