【发布时间】:2014-04-06 19:34:35
【问题描述】:
我已经用 QML(Qt 5 的一部分)编写了几个应用程序。在我之前提出的问题 (https://softwareengineering.stackexchange.com/questions/213698/deploying-qt-based-app-on-mac-os-x) 中,我找到了在 OS X 上部署我的应用程序的解决方案(使用 macdeployqt 工具)。
在 Windows 上部署 Qt4 应用程序很容易:
- 你是在发布模式下编译的。
- 您复制了必要的库 (DLL)。
- 您进行了测试,并且成功了。
不幸的是,这种方法在 Qt5 中不起作用(我什至在 qwindows.dll 文件中包含了平台文件夹,但它不起作用)。经过几天的尝试,我放弃并编译了Qt5的静态版本。
再次,它没有工作。该应用程序可以在安装了 Qt 的 PC 上运行,但在“干净”的 PC 上会崩溃。附带说明一下,Windows 8/8.1 系统不会发出警告或消息通知我有关应用程序崩溃的信息。但在 Windows 7 中,一条消息通知我应用程序崩溃了。
我已尝试运行 Dependency Walker (depends.exe),我的应用程序静态构建中的所有库似乎都很好。
在 Windows 8 中,我没有收到任何错误。但是在对depends.exe 中的应用程序进行分析后,我收到了源自QtGui.dll 的访问冲突。确切的错误是
在地址 0x61C2C000 的“QT5GUI.DLL”中发生第二次机会异常 0xC0000005(访问冲突)。
我是否缺少某些东西(比如额外的 DLL 或配置文件)?
申请信息:
- 使用 Qt 5.2.1 编写和编译
- 使用 Quick/QML。
- 使用网络模块。
- 使用 webkit 模块。
- 使用蓝牙模块。
- QML 文件是用 Quick 2.2 编写的
【问题讨论】:
-
确切的错误是什么?你有崩溃转储吗?您是否尝试以某种方式分析所述故障转储?
-
确切的错误是“第二次机会异常 0xC0000005(访问冲突)发生在地址 0x61C2C000 的“QT5GUI.DLL”中。”
-
说实话真的很烂。为什么他们不能只制作一个部署按钮并完成它。
-
绝对可以,@GeneCode。这就是为什么 OP 称它为“简单”的原因,因为任何 3 岁的“需要复制的 DLL”都可以告诉你所有相关信息;-)
-
5 年过去了,到了 2020 年,部署一个微不足道的 Qt 应用程序变成了一场噩梦。
标签: c++ windows deployment qt