在发布 Qt 应用或 QML(Qt Quick)应用时经常出现缺少各种dll插件,窗体空白,点击程序没有反应或者程序运行时图片等其它资源加载不正常等问题,寻找程序依赖的文件是一个极其麻烦的事情,所以可以采用以下终极方法。
- 新建一个空白文件夹,作为最终发布程序的文件夹
- 在 Qt Creator 中生成 release 版本的exe文件,将app.exe拷贝到发布文件夹
- 将编写程序用到的第三方dll(可查看pro文件)、图片、文本(是否用到了某些绝对路径的资源)等文件拷贝到发布文件夹
- 将 Qt 安装目录下的bin文件夹 (C:\Qt\Qt5.10.0\5.10.0\msvc2015_64\bin\)下所有的全部dll文件拷贝到发布文件夹
- 将 Qt 安装目录下plugins 文件夹 (C:\Qt\Qt5.10.0\5.10.0\msvc2015_64\plugins\)下的全部子文件夹拷贝到发布文件夹
- 如果使用了QML,则将Qt 安装目录下qml文件夹 (C:\Qt\Qt5.10.0\5.10.0\msvc2015_64\qml \)下的全部子文件夹拷贝到发布文件夹
- 关闭 Qt creator ,暂时将 Qt 安装路径重命名,比如将 C:\Qt 更改为 C:\QtTempt。在发布完成后要记得更改回来
- 运行app.exe
经过上述步骤,一般都能打包出正常执行程序,但是整个文件夹可能会有1-2GB,所以接下来就是分步删除不需要的文件,并查看 app.exe是否正常工作。 删除文件有以下几点技巧:
- 因为发布的时release版本程序,所有可以先查找所有 d.dll 后缀的文件,并全部删除。
- QML (Qt quick 2) 常用到的dll 有Qt5Core.dll, Qt5QuickControls2.dll, Qt5Multimedia.dll, Qt5Quick.dll, Qt5Qml.dll, Qt5Widgets.dll, Qt5Gui.dll, Qt5Network.dll, Qt5QuickTemplates2.dll
- QML (Qt quick 2) 常用到的文件夹有 platforms, Qt, QtQuick, QtQuick.2, QtQml