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

一:先解析下我的环境:

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目录里的同名文件。

        <div class="person-messagebox">
            <div class="left-message"><a href="https://blog.csdn.net/jhkdiy">
                <img src="https://profile.csdnimg.cn/A/5/B/3_jhkdiy" class="avatar_pic" username="jhkdiy">
            </a></div>
            <div class="middle-message">
                                    <div class="title"><span class="tit "><a href="https://blog.csdn.net/jhkdiy" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;,&quot;ab&quot;:&quot;new&quot;}" target="_blank">jhkdiy</a></span>
                    <!-- 等级,level -->
                                            <img class="identity-icon" src="https://csdnimg.cn/identity/blog5.png">                                            </div>
                <div class="text"><span>原创文章 52</span><span>获赞 9</span><span>访问量 15万+</span></div>
            </div>
                            <div class="right-message">
                                        <a class="btn btn-sm  bt-button personal-watch" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;extend1&quot;:&quot;个人信息未关注&quot;}">关注</a>
                                                            <a href="https://im.csdn.net/im/main.html?userName=jhkdiy" target="_blank" class="btn btn-sm bt-button personal-letter">私信
                    </a>
                                </div>
                        </div>
                    
    </div>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值