You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Linux Manjaro用MinGW64编译的Windows exe缺失libstdc++-6.dll如何解决?

解决MinGW编译的Windows exe缺失libstdc++-6.dll问题

嘿,这个问题我之前帮朋友处理过好多次,本质是你用MinGW编译时默认用了动态链接的C++标准库,而你朋友的Windows系统里没有这个库文件。给你几个实用的解决办法,按需选就行:

1. 静态链接标准库(最推荐,一劳永逸)

直接在编译命令里加参数,把C++和C的标准库静态打包进exe里,这样生成的文件不需要依赖外部DLL就能独立运行。修改后的编译命令是:

x86_64-w64-mingw32-g++ -static-libstdc++ -static-libgcc -o main.exe main.cpp
  • -static-libstdc++:静态链接C标准库(对应缺失的libstdc-6.dll)
  • -static-libgcc:静态链接C标准库(避免后续可能出现的libgcc_s_seh-1.dll缺失问题)
    注意:静态链接会让exe体积变大一点,但换来了完全的独立性,非常适合发给朋友测试的场景。

2. 随exe一起发送依赖的DLL文件

如果不想增大exe体积,可以把缺失的DLL和exe放在同一文件夹里发给朋友。你可以在Manjaro上先找到这些DLL的位置:

  • 一般在MinGW64的bin目录下,路径类似/usr/x86_64-w64-mingw32/bin/
  • 也可以用ldd main.exe命令检查exe的所有依赖,找出需要的DLL(比如libstdc++-6.dll、libgcc_s_seh-1.dll、libwinpthread-1.dll这几个是常见的)

把这些DLL和main.exe打包一起发给朋友,他双击exe就能正常运行了。

3. 让朋友安装MinGW运行时环境

如果你的朋友经常需要测试这类MinGW编译的程序,可以让他安装MinGW-w64的运行时库,这样系统里就会有这些依赖DLL,以后再运行类似程序就不会报错了。不过这个方法适合长期有需求的情况,临时测试的话前两个方法更直接。

内容的提问来源于stack exchange,提问作者Dương Đăng Khả Minh

火山引擎 最新活动