VS Code中MSYS2运行C++触发Segmentation fault:libstdc++-6.dll路径异常
问题:MSYS2编译C++后运行触发Segmentation fault,DLL加载路径异常
按VS Code配置指南安装MSYS2后,使用g++可以成功编译代码,但运行时持续触发Segmentation fault错误。调试日志显示程序加载了D:\Programme\Python\Library\mingw-w64\bin目录下的libstdc++-6.dll,而非MSYS2安装目录中对应的正确版本。
测试代码
#include <iostream> using namespace std; int main(){ cout<<"Hello World"; return 0; }
环境细节
- 系统中存在多个
libstdc++-6.dll副本,分布在Arduino、NordVPN等目录 - 已将
C:\msys64\ucrt64\bin设置为用户和系统PATH环境变量的首位,理论上应优先加载MSYS2版本的DLL - 删除Python目录下的
libstdc++-6.dll可解决问题,但担忧会破坏Python或其他依赖程序的正常运行
临时解决方案
创建launch.json文件可临时解决该问题,配置内容如下:
{ "version": "0.2.0", "configurations": [ { "name": "Run C++", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "C/C++: g++.exe build active file", "miDebuggerPath": "C:\\msys64\\ucrt64\\bin\\gdb.exe" } ] }
但不想为每个任务都手动创建该文件。后续重装Windows、VS Code及MSYS2后问题得到解决,但无法确定具体修复原因,建议从launch.json的DLL调用逻辑入手排查,寻找更通用的解决方案。
内容的提问来源于stack exchange,提问作者thinksolid
相关产品推荐
相关产品推荐

