Qt5 中发布程序遇到could not find or load the Qt platform plugin "windows"
以下内容参考或引用
http://blog.****.net/ac_huang/article/details/34854205
http://blog.****.net/kyzoon/article/details/50909533
写在前面
今天在测试写的Qt软件时,将Qt编译生成的软件,与使用ProcessExplorer查找出来的相应的DLL,一起发送到XP SP3的电脑上,来测试。报出来两个错误,如下图示:
问题1:
This application failed to start because it could not fine or load the Qt platform plugin "windows".
Reinstalling the application may fix this problem.
问题2:
Runtime Error!
Program: C:\Program Files\.... - 4.0.exe
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
解决方案:
是查了一些资料,此处就不再多述了。解决的一个主要方法,只是将Qt安装目录下的一个platforms文件夹一同拷贝到Qt生成的软件下。
platforms文件夹路径:Qt\Qt5.5.0\5.5\mingw492_32\plugins\,该路径下有一个“platforms“文件夹,其中包含的是平台相关的一些动态库文件。将这个文件夹一起打包发布,则可以解决上面的问题。
**注意:这一切的前提是,请一定解决掉其它的DLL动态库的依赖问题。相关资料请参考Blog《将Qt动态链接生成的exe及依赖dll打包方法》——http://blog.163.com/[email protected]/blog/static/1582209320132291718389/
~~~~我的生活,我的点点滴滴!!
转至http://www.cnblogs.com/mmix2009/p/3536825.html 图片什么的我也懒得自己截了。
Qt5也出来一段时间了,改变很大,又添加了很多新功能,有了for Android for iOS for wp等,感觉好高大上啊,这里我们先不说 移动平台的,我们在这里普及一些程序发布时常见错误,在windows上程序发布时我们需要把动态链接库dll全带上,但是当我们带上后,双击exe后,发现报错
一般这种在本机上运行好好的,在别人那里运行不起来,就是缺少dll,而正常的qt的dll,我们只需要去qt的lib下面复制就行,直接与exe放在同目录下就行,但是对于plugin下的,我们要注意了,需要连文件夹一起复制过来,不能直接和exe同级,例如上面问题就是缺少qwindows.dll
这个dll, 这个dll在qt4是没有的,qt5新出的,所以我们进入下面目录去复制
D:\Qt\Qt5.2.0\5.2.0\msvc2010\plugins\platforms\qwindows.dll,带红色的复制到你的exe执行文件目录。就是platforms文件夹,他里面一个qwindows.dll
很多时间也许你复制了他还是不好使用,因为有可能你还使用了其他的插件,大家可以去plugin下看看,好多插件的,我们依次照上面的方法复制文件夹到自己的exe目录下,然后在main中添加代码
QApplication::addLibraryPath("./plugins");
我写的Qt程序只用到了image插件,需要把 D:\Qt\Qt5.2.0\5.2.0\msvc2010\plugins\imageformats,带红色的文件夹包括imageformats里的大部分dll复制到exe执行文件目录就OK了,如果用到数据库插件等,也要复制。
有人说我们怎么知道我们的程序哪些dll是被需要的?我们可以使用vc自带的一个工具Depends 使用他打开exe就能列出所需要的dll,这里我不科普他了,我们用一个新的、功能更强大的工具------>Process Explorer
Process Explorer帮助非常大,我们用Qt Creator 运行我们将要发布的程序时,就可以用 Process Explore 查看exe使用的dll了,除了C:windows\system32的我们不需要特别关注外,像下图红框中的就要关注了,程序运行失败很可能就是少了对应的dll文件。
最后我们看看我们发布程序的布局
其实原理和qt4发布程序时一样的。
附上process explorer的下载地址