QML release版本,windeployqt.exe打包库文件之后,依然缺少库文件解决办法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangyachao0803/article/details/81011055

1. 使用windeployqt.exe打包库文件:

        在开始菜单中Qt列表下找到对应版本的cmd,比如我用的是Qt5.9.3 MinGW,则对应的为Qt5.9.3 for Desktop (MinGW 5.3.0 32 bit)。

        打开之后,cd转到release版本生成的exe文件目录下,比如我的放在了H:\Qt\Qt5.9.3\5.9.3\mingw53_32\pack文件夹下(pack为新建的文件夹),则cd H:\Qt\Qt5.9.3\5.9.3\mingw53_32\pack。

        执行命令windeployqt UsbGpib.exe --qmldir  H:\Qt\Qt5.9.3\5.9.3\mingw53_32\bin 。执行完可以在exe的目录自动生成依赖项。

2. 通过以上步骤,运行exe,依旧没有反应,将exe拷贝至qt的bin目录,可以运行,说明依赖项不全。

问题解决:

        手动添加依赖项,查看依赖项的终极方法:qt creator  release(之前采用debug模式,发现release版本也可以查看),“控件"-"视图(view)”-“modules”,运行程序,既可以查看exe运行加载的所有dll。

        将与qt有关的一一拷贝出来,主要为qt目录的“bin”、“plugins”、“qml”。

        注意:拷贝时,应拷贝对应release版本的库文件,如qwindowsd.dll对应Debug版本,则release版本应拷贝qwindows.dll。

        注意:只拷贝这几个目录内的内容,目录本身去掉,如“plugins”-“platform”-qwindows.dll,只保留“platform”-qwindows.dll。

        注意:“qml”目录存放的是qml插件,一系列.qmlc和.qml文件,调用到哪一个插件,就要将插件所在的整个文件夹拷贝出来,如调用了“qml\QtQuick\Controls.2”-qtquickcontrols2plugin.dll,则需要拷贝整个“QtQuick\Controls.2”文件夹。

        注意:有些模块需要操作时,才出现相应的dll文件,比如我的程序有几个模块,其中在界面切换到LAN模块该时,modules又增加了几个新的依赖库文件,而未打开时则不显示,这几个文件也是必不可少的,否则LAN模块打开后,界面不显示任何东西。

本文摘取了https://blog.csdn.net/kelvin_yan/article/details/78666320的部分内容,感谢原作者。

猜你喜欢

转载自blog.csdn.net/wangyachao0803/article/details/81011055
QML