Qt5 QML程序Release版本发布程序无法显示的问题解决过程。

xiaoxiao2021-02-28  18

一:先解析下我的环境: 1:QT平台: qt-opensource-windows-x86-mingw530-5.7.1 2:系统:Win7 64位平台 3:使用QT quick control 2.0 版本 4:本程序的名字位 Btc.exe 5:本程序使用windeployqt打包的目录如下:   二:现象 1:使用QML页面开发,没有使用特殊的硬件。 2:在QT Creator 中正常运行,正常显示。 3:使用windeployqt的打包工具打包后直接双击运行程序,报错: 4:使用windeployqt打包Release版本的程序,单独运行程序无反应,但在任务管理器中存在进程。   5:如果将程序放在 QT的MinGW环境下又能正常运行,我这边的QT路径是:D:\Qt\Qt5.7.1\5.7\mingw53_32\bin。   三:解决过程 为什么在QT Creator中运行正常,而且把程序放在mingw的bin目录下也正常,使用windeployqt打包的直接双击运行却无法显示。 1:既然能在mingw的环境运行,于是我把整个mingw的bin目录所有文件都搬过来,想不到文件有2.3G多。但是程序依然运行不显示。 2:一开始使用windeployqt打包直接运行报错,但错误提示清晰,很好解决,把三个dll加进去即可: libgcc_s_dw2-1.dll libstdc++-6.dll libwinpthread-1.dll 3:放进去之后双击运行程序没有报任何错误,在任务管理器里也又进程,只是不显示界面。 4:把程序目录里文件夹移到程序外面,然后再双击运行,报错:   5:好吧,提示有“”platform“”字样,于是把 之前产生的platforms文件夹放回到程序目录里,结果没报错,但是依然不显示界面。 6:在上面的基础上,再把 mingw 的bin目录里的所有dll文件复制到当前程序目录里,竟然正常运行,但是所有文件加起来有2.3G,于是进行裁剪,把很多明确不需要 的Debug版本的dll清除了,最后清理到只有20多MB。 7:以为这样可以解决了,但还是不明白原因,于是继续追查,对比从mingw的bin目录复制过来的dll和windeployqt打包的dll,以为是windeployqt把一些dll漏掉了,但是 结果为false,因为windeployqt打包的dll更多:   8:继续追击,我检查了DLL的文件大小,发现都一样,百思不得其解,为什么windeployqt打包的dll反倒不能运行,最后我决定使用MD5校验 来检查,当检查到Qt5Core.dll的时候大吃一惊,他们的MD5不一样:   9:随后检查了其他的dll,发现MD5都一样,再次验证,把mingw的bin目录的Qt5Core.dll文件复制到程序不显示的目录里,双击运行程序,一切正常!   结论: 如果开发的QML程序运行没显示,可以尝试下列解决方法: 1:把windeployqt打包后的目录移到程序的上一层目录里。 2:如果是基于mingw的程序,记得把windeployqt打包的Qt5Core.dll文件替换为MinGW的bin目录里的同名文件。
转载请注明原文地址: https://www.6miu.com/read-1600178.html

最新回复(0)