Qt发布的时候会遇到的问题

1.编译方式的选择:动态链接库vs静态链接

一般来说,做小demo都比较嫌弃麻烦,所以都选择用动态链接库。对于Qt程序,如果要给别人用,就要把exe程序,加上Qt 的必要dll文件,以及你(您?礼貌一点?)需要用到的其他库的dll,例如opencv的那些东东。

一般跟别人一样的操作,直接双击 XX.exe,提示缺少什么dll,就去Qt的安装目录下的bin文件夹里去找。

推荐一个小工具,百度可以找到,叫一键release。其实这个一键release做的一般般,但是对于做小demo而言,已经是很好的帮助。省却了一个个dll找起来的麻烦。比如我要做qt+opencv,光是dll就有十几二十个。但是用一键release其实也需要自己了解dll的原理,还有了解自己用到了哪些dll。


 //********************************** 补充说明 (2015 3 18) *******************************************

后来我用VS+Qt来做开发,发布的时候发现 一键release 这个东西不好用了。。然后上网搜了一下,看到了dependancy walker

感觉这个walker比一键release做的好,具体怎么个好法用户自己去发掘。

顺便一提,用VS2013+Qt5开发,需要带的dll和单纯用Qt Creator开发用的dll稍有不同。主要原因,一个是VS默认用自带的编译器VC,而QtCreator默认使用g++作为编译器。故前者需要带上msvcp120.dll,msvcr120.dll;而后者则是带上libgcc_s_dw2-1.dll,libstdc++-6.dll,libwinpthread-1.dll。然后两者都需要带上Qt所必须的dll,以及其他需要的dll(例如你使用了opencv,就带上opencv的dll)。

又顺便一提。在dependency walker里面,如果是使用VS2013+Qt开发的程序,除了上述的vs的dll和qt的dll,还有一个kernel32.dll和shell32.dll。这两个dll实际上就是windows最核心的部分,包括了一些基础API。一般每个windows都会自带这个,放在C盘(系统盘)的windows/system32下面,故不需要拷贝到发布的程序那里。当然,一个win7 win8下正常的程序,到了XP下就跪了,原因就是这kernel以及shell不兼容了。

2. This application failed to start because it could not find or load the Qt platform plugin "windows"

 (以下这段复制别人的,讲得太好不忍心不复制,谢谢博主,链接是http://www.cnblogs.com/mmix2009/p/3536825.html)

复制所需的dll后,提示了这个错误。这个错误的解决方案是:

1.可能缺少复制 libEGL.dll

2.需要把D:\Qt\Qt5.2.0\5.2.0\msvc2010\plugins\platforms\qwindows.dll,带红色的复制到你的exe执行文件目录。就是platforms文件夹,里面一个qwindows.dll

一般移植到别人的电脑使用,都需platform的变换,故而把解决方案2号做了就可以了。上面提到的一键release,不会帮你(您。。)做这个platform文件夹的复制,所以要自力更生艰苦奋斗。platform文件夹里面的dll是Qt为了方便多平台移植所做的贡献,实际上是插件的一种,所以是在Qt的bin目录下找到plugins,再打开才能找到platform


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值