最近在发布Qt+qml程序时遇到了一个问题,使用windeployqt将依赖的dll文件打包到文件夹后,将文件夹复制到纯净系统中运行时报错"QtQuick.Controls" is not installed,如下图所示。而在开发环境中运行则无任何问题。
![](https://img-blog.csdnimg.cn/img_convert/5d166dc0227348dade692842b910f3df.png)
一番搜索后发现是未将依赖的qml环境一并打包至文件夹中,所以可以再打包时添加选项-qml。完整命令为windeployqt -qmldir E:\qt\5.15.2\msvc2019_64\qml .\xxx.exe。其中-qmldir后为本机qt环境中qml文件夹的位置,xxxexe则为你的应用程序。使用该命令后会自动检索依赖的qml模块,并将其打包至当前目录下。如下图所示。如此打包后应用程序正常运行,无相关报错。
![](https://img-blog.csdnimg.cn/img_convert/df36f53041eeceaf6b90be51c4c580de.png)
在自己开发环境可正常运行的原因是在环境变量中添加了QML2_IMPORT_PATH选项。
![](https://img-blog.csdnimg.cn/img_convert/723528d6d1cd2d9981e31eba5e32a46b.png)