
第一步 先按照如下连接安装完vscode配置好gcc。Using GCC with MinGW第二步编译正常hello.exe ,运行hello.exe的时候总是报段错误。#include iostream #include vector #include string using namespace std; int main() { // vectorstring msg {Hello, C, World, from, VS Code, and the C extension!}; // for (const string word : msg) // { // cout word ; // } // printf(hello world!\n); std::couthello world!\nendl; }通过调试信息发现段错误发生在 链接libstdc-6.dll库Thread 1 hit Breakpoint 1, main () at D:\code\cplusplus\vscdoecpp\hello.cpp:1515 printf(hello world!\n);Loaded C:\WINDOWS\SYSTEM32\ntdll.dll. Symbols loaded.Loaded C:\WINDOWS\System32\kernel32.dll. Symbols loaded.Loaded C:\WINDOWS\System32\KernelBase.dll. Symbols loaded.Loaded C:\WINDOWS\System32\ucrtbase.dll. Symbols loaded.Loaded C:\Program Files\Git\mingw64\bin\libstdc-6.dll. Symbols loaded.Loaded C:\WINDOWS\System32\msvcrt.dll. Symbols loaded.Loaded C:\Program Files\Git\mingw64\bin\libgcc_s_seh-1.dll. Symbols loaded.Loaded C:\Program Files\Git\mingw64\bin\libwinpthread-1.dll. Symbols loaded.Loaded C:\WINDOWS\SYSTEM32\cryptbase.dll. Symbols loaded.Loaded C:\WINDOWS\System32\bcryptprimitives.dll. Symbols loaded.Thread 1 received signal SIGSEGV, Segmentation fault.0x00007ff8c7086456 in ?? () from C:\Program Files\Git\mingw64\bin\libstdc-6.dllExecute debugger commands using -exec command, for example -exec info registers will list registers in use (when GDB is the debugger)我的mingw64环境明明配置的是C:\msys64\ucrt64\bin怎么会连接到C:\Program Files\Git\mingw64\bin下面呢在deepseek中查找原因说windows搜索dll的顺序是1、当前工作目录Current Directory也就是你执行 where 命令时所在的文件夹。如果你恰好在一个存放着 g.exe 的文件夹里执行命令它会最先被找到。2、系统环境变量 PATHSystem PATH按系统变量 PATH 中从左到右即从上到下的顺序逐一搜索每个文件夹。3、用户环境变量 PATHUser PATH按用户变量 PATH 中从左到右即从上到下的顺序逐一搜索每个文件夹。已经确实当前工作目录没有libstdc-6.dll然后就尝试将C:\Program Files\Git\mingw64\bin调整到最上面并且确认用户path路径下没有 C:\Program Files\Git\cmd 。然后重新运行发现问题依然存在。为什么还是会优先找到找到C:\Program Files\Git\mingw64下面的libstdc-6.dll呢在 VS Code 的终端中输入whereis libstdc-6.dll命令输出结果如下。从输出中可以看到系统确实优先找到了位于C:\Program Files\Git\mingw64目录下的libstdc-6.dll文件。我明明将C:\msys64\ucrt64\bin 提到了最上面。终端输入echo %PATH% 回显 %PATH% 哦这个是linux下面的语法。终端输入 echo $PATH 回显/mingw64/bin:/usr/bin:/c/Users/dengf/bin:/c/msys64/ucrt64/bin:/c/Program Files (x86)/Common Files/Oracle/Java/javapath:/c/Program Files (x86)/VMware/VMware Workstation/bin:/c/WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/System32/Wbem:/c/WINDOWS/System32/WindowsPowerShell/v1.0:/c/WINDOWS/System32/OpenSSH:/cmd:/c/Users/dengf/.jdks/ms-11.0.28/bin:/c/Program Files/Bandizip:/c/Program Files/nodejs:/c/Program Files/JetBrains/IntelliJ IDEA 2023.1.4/plugins/maven/lib/maven3/bin:/c/Program Files/Graphviz/bin:/c/cygwin64/bin:/d/k8s:/c/Program Files/Docker/Docker/resources/bin:/c/Program Files/dotnet:/c/Program Files/JetBrains/IntelliJ IDEA 2023.1.4/bin:/c/Users/dengf/AppData/Local/Programs/Python/Python37:/c/Users/dengf/AppData/Local/Microsoft/WindowsApps:/c/Users/dengf/AppData/Local/Programs/Python/Python37/Scripts:/c/Users/dengf/AppData/Local/Programs/Python/Python37/Lib/site-packages/Django-3.2.21-py3.7.egg:/c/Users/dengf/AppData/Roaming/npm:/c/Users/dengf/AppData/Local/Programs/Microsoft VS Code/bin:/c/Users/dengf/.dotnet/toolsc:/Users/dengf/.vscode/extensions/vscjava.vscode-java-debug-0.59.0/bundled/scripts/noConfigScriptsgit安装目录下的mingw确实排在了最前面。这到底是为什么呢回想起以前看到的资料git运行本来就深度绑定mingw我的vscdoe终端设置的git bash肯定会优先查找自己的mingw。原因就是在这里于是将vscdoe的运行终端换成windows的默认终端。问题得到了解决。