Windows11下C++程序运行遇Segmentation fault(libstdc++-6.dll相关)求助
解决Windows 11下g编译HelloWorld触发Segmentation fault(关联libstdc-6.dll)的问题
常见原因与修复方案
1. 多版本libstdc++-6.dll冲突
Windows里如果装了多个MinGW、Cygwin或者其他依赖该DLL的软件,很可能出现运行时加载了不匹配的DLL版本的情况,直接导致段错误。
- 处理方式:
- 找到你当前用的g++所属的MinGW安装目录(比如
C:\mingw64\bin),把这个路径移到系统PATH环境变量的最顶端,保证优先加载正确的DLL。 - 删除系统其他路径(比如
C:\Windows\System32、第三方软件目录)里的libstdc++-6.dll,彻底消除冲突。
- 找到你当前用的g++所属的MinGW安装目录(比如
2. MinGW安装包损坏或不完整
MinGW的标准库文件如果损坏,运行时必然出问题。
- 处理方式:
- 卸载现有MinGW,重新下载安装官方最新版的MinGW-w64,选对应你系统架构的版本(x86_64)。
- 安装时务必勾选
libstdc++组件,别漏装。
3. 编译选项不兼容
部分编译参数会导致标准库调用异常。
- 处理方式:
- 试试静态编译,彻底避开动态DLL依赖:
g++ hello.cpp -o hello -static - 静态编译完成后运行
./hello,看是否还会报错。
- 试试静态编译,彻底避开动态DLL依赖:
4. 终端环境混淆(WSL vs 原生MinGW)
如果混用WSL和原生MinGW环境,比如在WSL里加载了Windows路径的DLL,也会触发段错误。
- 处理方式:
- 确认终端环境:用WSL就纯在Linux环境编译运行,别碰Windows的DLL;用原生MinGW终端就按前面的步骤检查环境变量。
验证步骤
修复后重新编译运行:
g++ hello.cpp -o hello ./hello
能正常输出Hello, world!就说明问题解决了。
内容的提问来源于stack exchange,提问作者Bruno Ramos Martins
相关产品推荐
相关产品推荐

