为何我基于控制台的C++游戏在其他Windows机器无法运行?(缺失DLL报错)
解决MinGW编译的EXE依赖缺失问题
方案1:静态编译(将依赖嵌入EXE,推荐)
MinGW默认采用动态链接C++标准库及GCC运行时库,导致生成的EXE依赖外部DLL。通过添加静态链接参数,可将所有依赖直接打包进EXE,无需额外文件:
修改你的编译命令,添加静态链接相关参数:
"E:\MinGW\bin\g++.exe" -fdiagnostics-color=always -g "E:\My Apps\C++\Projects\TTT-game\TTT-Game.cpp" -o "E:\My Apps\C++\Projects\TTT-game\TTT-Game.exe" -lWinmm -lGdi32 -static -static-libstdc++ -static-libgcc -static-libwinpthread
参数说明:
-static:全局启用静态链接(对所有支持静态链接的库生效)-static-libstdc++:强制静态链接C++标准库(对应缺失的libstdc++-6.dll)-static-libgcc:强制静态链接GCC运行时库(对应缺失的libgcc_s_seh-1.dll)-static-libwinpthread:强制静态链接线程库(对应缺失的libwinpthread-1.dll)
编译完成后,生成的EXE可直接在其他Windows电脑上运行,无需额外文件。
方案2:携带依赖DLL(适合控制EXE体积的场景)
如果不想通过静态链接增大EXE体积,可将缺失的DLL与EXE放在同一目录打包分享:
- 打开你的MinGW安装目录,进入
bin文件夹 - 找到
libstdc++-6.dll、libgcc_s_seh-1.dll、libwinpthread-1.dll三个文件 - 将它们复制到你的
TTT-Game.exe所在文件夹,一起打包发送给朋友
注意:必须使用与你编译时相同版本MinGW的DLL,避免版本不兼容导致运行错误。
内容的提问来源于stack exchange,提问作者PCG Doris
相关产品推荐
相关产品推荐

