中外商贸网站建设,货运代理网站模板,凡科网站代码如何修改,wordpress 插件 留言Windeployqt 打包#xff0c;缺少DLL 的原因分析#xff0c;解决方法
很多同学使用工具windeployqt进行打包发布后#xff0c;运行exe文件时#xff0c;还是会出现下图所示的系统错误提示#xff0c;这种情况就表示相关的DLL 库文件没有被正确打包。可是windeployqt明确显…Windeployqt 打包缺少DLL 的原因分析解决方法
很多同学使用工具windeployqt进行打包发布后运行exe文件时还是会出现下图所示的系统错误提示这种情况就表示相关的DLL 库文件没有被正确打包。可是windeployqt明确显示运行正常啊难道是QT自家的windeployqt这个工具有bug显然不可能。下面就来分析一下问题的原因并给出解决问题的详细步骤相信大家看完后就会豁然开朗。 其实产生这个问题的原因很简单就是很多同学在打包时都是直接在windows 环境下打开cmd 命令行然后执行指令windeployqt运行时就会出现上图的错误。正确的做法应该是在QT提供的命令行环境下执行windeployqt这两者有什么区别呢
如下图步骤在windows桌面搜索栏输入qt按上下键选择相应的版本此处选择Qt 6.4.1 for Desktop (MinGW 11.2.0 64-bit)然后选择【打开文件位置】
在打开的目录下面有一个相应的快捷方式图标Qt 6.4.1 for Desktop (MinGW 11.2.0 64-bit)
右键点击此快捷文件选择【属性】
查看目标栏内容此处内容为
C:\Windows\System32\cmd.exe /A /Q /K E:\Qt\Qt6.4\6.4.1\mingw_64\bin\qtenv2.bat
看到这里就知道了原来从QT环境打开命令行时执行了一个批处理文件 qtenv2.bat那这个文件里面干了什么呢
在E:\Qt\Qt6.4\6.4.1\mingw_64\bin\ 目录打开qtenv2.bat其内容如下
echo off
echo Setting up environment for Qt usage...
set PATHE:\Qt\Qt6.4\6.4.1\mingw_64\bin;E:\Qt\Qt6.4\Tools\mingw1120_64\bin;%PATH%
cd /D E:\Qt\Qt6.4\6.4.1\mingw_64此处设置了windeployqt 运行时的环境变量PATH它指定了2个bin目录打包需要的DLL 库文件就在这2个bin目录里面。所以从windows 环境直接打开命令行cmd.exe 时是没有进行这个环境变量设置的或者在其他地方设置了但是可能没有生效。
接下来我们从QT 进入命令行验证一下。下图中直接点击选项 2【Qt 6.4.1 for Desktop (MinGW 11.2.0 64-bit)进入命令行环境
在命令行手动输入打包指令回车运行…
指令运行完毕后如下图红框3 显示指令执行正常红框1,2 就是新增加的库文件。
此时双击运行LangSwitch.exe如下图所示运行正常说明整个打包的过程是正确的。
通过以上分析和验证可以得出结论
从windowds 直接打开cmd 进入命令行时没有设置环境变量PATHwindeployqt 自然就无法找到相应的DLL 库文件最后导致错误发生。
所以正确的做法应该是从QT环境进入命令行然后再手动输入执行windeployqt 就不会有问题了. 现在DLL缺失的问题是解决了但是如果每次执行windeployqt 打包时都要手动输入类似下面的一长串字符真的是有点烦。
E:\Qt\Qt6.4\6.4.1\mingw_64\binwindeployqt.exe E:\Qt\Qt6source\CH15\CH1502\LangSwitch\release\LangSwitch.exe那有没有什么其它的工具避免这个烦人的事情呢 答案是QT没有
然鹅但是但是
QT没有不代表我们就要一直受这个鸟气经过本人研究还真的琢磨出一个曲线救国的好办法不需要打开命令行cmd也不需要输入任何字符只要点一下鼠标就可以一键完成打包的所有动作也就是说只要是有手的人就可以完成打包真正的傻瓜式操作绝对可靠。有兴趣的同学请参考本人以下链接文章【windeployqt实现一键打包的方法】
https://blog.csdn.net/zchill/article/details/128974201