使用QT的windeployqt程序补齐动态链接库后,在其它电脑上程序报错,提示:由于找不到libgcc_s_dw2-1.dll,无法继续执行代码。重新安装程序可能会解决此问题。

问题现象

如下所示,在开发环境中补齐后可以执行程序,但是打包到其它电脑上时提示缺少相关库。

图片[1] - 使用QT的windeployqt程序补齐动态链接库后,在其它电脑上程序报错,提示:由于找不到libgcc_s_dw2-1.dll,无法继续执行代码。重新安装程序可能会解决此问题。 - 正则时光
图片[2] - 使用QT的windeployqt程序补齐动态链接库后,在其它电脑上程序报错,提示:由于找不到libgcc_s_dw2-1.dll,无法继续执行代码。重新安装程序可能会解决此问题。 - 正则时光

原因分析

1.QT的bin目录已经添加到环境变量中,所以才能在终端中直接执行windeployqt程序。这个没问题。

图片[3] - 使用QT的windeployqt程序补齐动态链接库后,在其它电脑上程序报错,提示:由于找不到libgcc_s_dw2-1.dll,无法继续执行代码。重新安装程序可能会解决此问题。 - 正则时光

2.报错提示缺少的相关库,在上图所示添加到环境变量中的路径中都能够找到。

图片[4] - 使用QT的windeployqt程序补齐动态链接库后,在其它电脑上程序报错,提示:由于找不到libgcc_s_dw2-1.dll,无法继续执行代码。重新安装程序可能会解决此问题。 - 正则时光
图片[5] - 使用QT的windeployqt程序补齐动态链接库后,在其它电脑上程序报错,提示:由于找不到libgcc_s_dw2-1.dll,无法继续执行代码。重新安装程序可能会解决此问题。 - 正则时光

3.通过上述查询不能理解为什么有文件,而没有把库文件放到程序目录。。这里再重新执行命令补齐,仔细查看补齐时的终端日志。发现如下:Warning: Cannot find GCC installation directory. g++.exe must be in the path.

图片[6] - 使用QT的windeployqt程序补齐动态链接库后,在其它电脑上程序报错,提示:由于找不到libgcc_s_dw2-1.dll,无法继续执行代码。重新安装程序可能会解决此问题。 - 正则时光

解决办法

1.根据上面分析过程,可能是需要添加g++.exe的路径,我们通过搜索找到此文件在C:\Qt\Qt5.6.1\Tools\mingw492_32\bin 目录下,所以尝试将此目录设置为环境变量。

图片[7] - 使用QT的windeployqt程序补齐动态链接库后,在其它电脑上程序报错,提示:由于找不到libgcc_s_dw2-1.dll,无法继续执行代码。重新安装程序可能会解决此问题。 - 正则时光

2.再次执行windeployqt动态链接库补齐命令,发现没有报错,并且补齐后的目录出现了之初缺失的库。

图片[8] - 使用QT的windeployqt程序补齐动态链接库后,在其它电脑上程序报错,提示:由于找不到libgcc_s_dw2-1.dll,无法继续执行代码。重新安装程序可能会解决此问题。 - 正则时光

效果

再次打包到其它电脑执行程序时,能正常执行成功!

图片[9] - 使用QT的windeployqt程序补齐动态链接库后,在其它电脑上程序报错,提示:由于找不到libgcc_s_dw2-1.dll,无法继续执行代码。重新安装程序可能会解决此问题。 - 正则时光
© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享