Qt5打包后缺少dll,启动失败问题

Qt5使用Qt自带的windeployqt打包程序教程很多,其过程也很简单,但是大部分人在打包过程中会出现提示缺少dll,或者错误0xXXXX等问题,网上各种说法,我测试过基本都不怎么正确,这里写一下我的解决方法。

经典错误

  • 缺少dll
  • 无法启动程序报错

解决方法

1. windeployqt版本要和Qt生成的exe版本一致。

我这里的是MINGW_32bit版本,如下图:

所以也要进入第一个控制台[Qt5.9.9 (MINGW 5.3.0-32bit)]环境下用windeployqt打包!

注意这里不要添加Qt\Qt5.9.9\5.9.9\mingw53_32\bin的全局变量在CMD界面下运行windeployqt,原因有两个:1.各种全局变量下不同平台版本的windeployqt变量路径会混乱,使用windeployqt版本可能不对应,而且就算你只添加一个对应的全局变量在CMD界面下运行windeployqt也可能会缺少dll。2. 添加全局变量下,即使缺少Qt的dll也能运行,会让你以为dll已经打全了,但是实际上你去掉相应的全局环境变量或者在其他电脑上一样报错。

2. Qt组件不全。

如果你严格按照1方法执行,发现还是报错缺少dll,那么极有可能是你的组件不全,这里以windows下为例子,正确的打包一般不会出现警告,如下图:

我之前失败时发现每次打包过程都会警告找不到VS的目录,我当时就很疑惑我明明是MINGW32bit下编译的exe为啥打包需要找Qt的VS组件文件,于是我尝试把Qt的windows下编译组件全装上,如下图:

再次运行1方法执行打包成功!

最后

我提供的方法也只是给大家一个参考,很可能你的问题不在其中,出现了问题国内找不到就去国外找吧

posted @ 2020-11-01 22:43  KINGES  阅读(3767)  评论(0编辑  收藏  举报