我已经用Qt 5 的 QML 写了几个应用程序。在之前的一个问题中 (https://softwareengineering.stackexchange.com/questions/213698/deploying-qt-based-app-on-mac-os-x),我找到了在 OS X 上部署应用程序的解决方案 (使用 macdeployqt 工具)。
在 Windows 上部署 Qt4 应用程序很容易:
- 您以发布模式编译它。
- 复制必要的库文件 (DLLs)。
- 测试并且它能够工作。
不幸的是,这种方法在 Qt5 中不起作用 (我甚至包含了带有 qwindows.dll 文件的 platforms 文件夹也无效)。尝试了几天后,我放弃了并编译了 Qt5 的静态版本。
然而,它仍然没有起作用。该应用程序在安装了 Qt 的 PC 上可以工作,但在“干净”的 PC 上会崩溃。顺便说一下,在 Windows 8/8.1 系统中没有警告或消息通知我应用程序崩溃了。但在 Windows 7 中会有消息通知我应用程序崩溃了。
我尝试了运行 Dependency Walker (depends.exe),静态构建的应用程序中的所有库都好像没问题。
在 Windows 8 中,我没有收到任何错误。但是在使用 depends.exe 对应用程序进行分析后,我得到了一个源自 QtGui.dll 的访问冲突 (access violation)。确切的错误信息是:
Second chance exception 0xC0000005 (Access Violation) occurred in "QT5GUI.DLL" at address 0x61C2C000.
我是否漏掉了什么东西 (比如额外的 DLL 或配置文件)?
应用程序信息:
- 使用 Qt 5.2.1 编写和编译
- 使用 Quick / QML。
- 使用网络模块。
- 使用 WebKit 模块。
- 使用蓝牙模块。
- QML 文件是用 Quick 2.2 编写的。