VSCode中C++ <filesystem>编译成功但无法运行求助
解决MinGW下C++ 运行报错0xc0000139的问题
你的问题核心是编译成功但运行时缺少动态链接库,错误码0xc0000139表示程序找不到依赖的DLL文件,针对MinGW环境下的<std::filesystem>,给出以下解决方案:
方案1:静态链接依赖库(推荐)
编译时直接把依赖的库打包到可执行文件里,避免运行时找DLL的问题。修改编译命令为:
g++ -std=c++20 main.cpp -o main -static-libstdc++ -static-libgcc -lstdc++fs
参数说明:
-static-libstdc++:静态链接标准C++库-static-libgcc:静态链接GCC运行库-lstdc++fs:链接filesystem库
这样生成的exe可以直接运行,不需要额外的DLL文件。
方案2:复制缺失的DLL到程序目录
如果不想静态链接,找到你的MinGW安装目录(比如C:\MinGW-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\bin),找到libstdc++fs-6.dll文件,复制到你的main.exe所在的文件夹,再运行程序即可。
方案3:检查MinGW版本与环境配置
- 确认MinGW是MinGW-w64版本(传统MinGW对C++17的filesystem支持不好),且版本不低于8.0
- 检查系统PATH里的MinGW路径是否正确,确保是你正在使用的MinGW的
bin目录,没有和其他版本的MinGW/TDM-GCC冲突 - 如果是64位系统,确保使用的是64位MinGW,避免32/64位架构不匹配导致的DLL找不到
方案4:VSCode调试配置修正
如果在VSCode里调试报错,修改.vscode/launch.json,确保环境变量包含MinGW的bin目录:
{ "version": "0.2.0", "configurations": [ { "name": "g++.exe - Build and debug active file", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [{"name": "PATH", "value": "${env:PATH};C:/你的MinGW路径/bin"}], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "C:/你的MinGW路径/bin/gdb.exe", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "C/C++: g++.exe build active file" } ] }
你的代码本身没有问题,只要解决依赖问题就能正常运行,执行后会创建test目录并输出hello world!。
内容的提问来源于stack exchange,提问作者gianluur
相关产品推荐
相关产品推荐

