QT 环境部署 双击无法启动 Qt程序中可启动

Qt 程序双击启动不了

如果遇到程序在 Qt 中允许可以正常工作,而在打包环境中双击启动不了(Debug,release) 程序查看发现程序只是挂在后台,而界面无法显示。
QT 环境部署 双击无法启动 Qt程序中可启动_第1张图片
参考文档
后来看到这篇文章发现使用 windeployqt 打包工具会出现,库的版本与编译器下的库比较 hash 之后发现不一致,所以手动拷贝所有的库,之后发现程序正常运行。我们实际发现也有可能是相关文件缺少导致,所以妥善方法就是全部拷贝过去(我的 msvc2017/bin 下 lib 文件)

我的操作步骤如下:
1 把 msvc2017 下 plugins , qml 下的文件夹拷贝过去(这步可以用 windeployqt)
2 bin 文件夹下的 以Qt 开头的 dll 文件拷贝全部拷贝过去
3 启动你的程序,然后删除没有被使用的文件可以正常删除 (记住同目录下 .dll 对应一个 qmldir 文件也不能删除)
QT 环境部署 双击无法启动 Qt程序中可启动_第2张图片


Qt 在 Windows 平台部署遇到问题

1 "could not find or load the Qt platform plugin “windows” in “”
2 QT no Qt platform plugin could be initialized
3 Error : “module ”QtQuick.Controls“ is not installed”

解决方案

1/2 问题可以算一个问题,是 Windows 部署 Qt 没弄好
1)根据你的编译器选择命令行
QT 环境部署 双击无法启动 Qt程序中可启动_第3张图片
2) 部署
只是 QWidget 只要执行这个命令(最好进入到应用程序所在的文件夹内)
windeployqt XXX.exe
有 QML 需要执行这个命令 (我得 QML 路径 (D:\Qt\5.14.2\msvc2017\qml))
windeployqt --qmldir qml文件路径 linntest.exe

  1. 依旧提示缺库或者缺文件怎么办
    简单,找到Qt对应编译器下的文件,直接放到执行 xxx.exe 同层级的地方,包括 plugin 这类文件,记住比如 virtualkeyboard 这个 QML 文件在 Qt 中是放在 plugin 下,你只需要将 virtualkeyboard 文件夹直接放在 跟 xxx.exe 同级的目录内即可

你可能感兴趣的:(Qt/QML)