c++ - Qt发布程序出错
黄舟
黄舟 2017-04-17 14:01:03
0
3
557

一、问题点:我在Qt5.3.1上开发完一个应用程序后,在开发机上运行良好,当我部署到其他机器时(release版本发布)弹出如下图错误后崩溃:

二、已采取应对措施
1、复制所需的*.dll(Qt5Core.dll...)到应用程序同一目录;
2、复制platforms目录到应用程序同一目录;
3、复制libEGL.dll,libGLESv2.dll,D3DCompiler_43.dll到应用程序同一目录。

三、应用程序机构图

注:图中hellworld.exe为测试程序,能正常运行,crm.exe为发布程序不能正常运行。

四、寻求帮助
请问还有哪些可能的因素会造成此问题,分别有哪些解决办法,谢谢不吝指教!

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全員に返信(3)
巴扎黑

您的图像,我也看不到,一直处于加载状态。关于Qt开发,本人,简单说一下,

Qt开发版本选择

Qt的版本号一般是三位数字,建议在选择版本的时候,选择大的版本。比如:4.8.0、5.0.0、5.3.0、5.7.0...最后一个数字尽量为0.这样的版本来说,相对于其他末尾非零数字的比较稳定吧。题主选的5.3.1,个人感觉不太好,但此次您的问题不在这儿。

Qt win 应用程序的发布

以下方法本人经过测试,觉得是比较方便可行的,如果不行,请参考他人方案。
其实Qt的应用程序的发布很简单,这么好的框架,Qt肯定考虑到怎么方便的发布程序。

题外话

Qt一次编写,多地编译发行,实现了他的跨平台性。不同的平台除了一些特殊的库以外,几乎使用的都是Qt的库。发布的程序不能运行,多数都是库的不完整性造成的。由于开发机器上已经配置了Qt的环境路径,所以在文件夹下直接运行,不会出错。但是纯净的机器,就很容易出错。多数是缺少Qt库文件。

windeployqt

这是Qt官方自带的一个小程序,从名字可以看出win deploy(发布) qt.

使用方法

1.release您的程序;
2.进入release文件夹下,除了可执行的程序外,其他都删除,没有用
3.win下,按住shift键,鼠标右键,选择在此处打开命令窗口
4.Qt环境路径先配置。直接敲打windeployqt my.exe,回车
5.查看您的release文件,多了好多文件,把整个文件夹拷贝到,干净的机器上,程序完美运行;
5.经过以上步骤,还不能运行的,请查看rp

いいねを押す +0
刘奇

不知是我网络还是SF自身原因,目前暂时看不到你的图片(无限loading)。
在Windows下发布的话,根据你.pro项目文件里面的"QT += ",这行所有的相关dll都要拷贝。
比如QT += core gui network opengl widgets需要拷贝:

Qt5Core.dll
Qt5Gui.dll
Qt5Network.dll
Qt5OpenGL.dll
Qt5Widgets.dll
libEGL*.dll #这个是OpenGL依赖的,不用OpenGL可无视。

然后根据你的编译器(MSVC或者MinGW),还要拷贝相关的dll,具体依赖的dll可以用Dependency Walker这个软件查看。
最后是platform的Windows目录,也许只需要qwindows.dll就可以了。
把dll一个个放到程序同一目录,慢慢排查。

いいねを押す +0
大家讲道理

除了楼上说的 windeployqt,还可以用【dependency walker】看生成的 exe 的 dll 依赖,然后把所有的 dll 都拷贝了就好。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート