我最近从 msys2 安装了 mingw,并测试了以下程序:
#include<iostream>
using namespace std;
int main()
{
cout<<"Hello World" ;
return 0 ;
}
但是我在 VS 代码中遇到分段错误。
相同的代码在 CodeBlocks(编辑)和 mingw 终端中运行良好。
似乎只要有 cout 或 cin 语句,我就会收到错误。
我确实做了
pacman -Syuu
来更新 msys2 软件包,但没有用。
launch.json :
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": " ${workspaceFolder}/${fileBasenameNoExtension}.exe",
// "sourceFileMap": {
// "/mnt/c": "C:/msys64/mingw64"
// },
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:/msys64/mingw64/bin/gdb.exe ",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
]
}
tasks.json:
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe build active file",
"command": "C:\\msys64\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
谢谢。
经过多次徒劳的尝试修复错误后,我设法通过将路径移动到用户和系统变量路径列表中环境变量的顶部
mingw\bin
来解决问题。
问题的根源是我有不同应用程序的多个
libstdc++-6.dll
文件,其路径位于 msys2 libstdc++-6.dll
的路径之上,这导致调用了错误的库版本。(感谢 @HolyBlackCat 指出这一点出).
最初,我尝试在 Git Bash 中执行 exe 程序,但它产生了相同的错误。不过,当我在 Powershell 中运行它时,问题就解决了。
我也有同样的情况。我为这个问题生气了好几天。
问题出在
tasks.command
文件中的 tasks.json
中。如果您按照 vscode 网站中的步骤操作,则默认路径为
"C:\\msys64\\mingw64\\bin\\g++.exe"
。我将双反斜杠重写为斜杠,即"C:/msys64/mingw64/in/g++.exe"
。这对我有用!
您可以在settings中将编译器路径设置为
"C:/msys64/mingw64/in/g++"
,这样每次构建新项目时就不必重写tasks.json
文件中的路径。