很多同学使用工具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 PATH=E:\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 进入命令行时,没有设置环境变量PATH,windeployqt 自然就无法找到相应的DLL 库文件,最后导致错误发生。

所以,正确的做法应该是从QT环境进入命令行,然后再手动输入执行windeployqt 就不会有问题了.

现在DLL缺失的问题是解决了,但是如果每次执行windeployqt 打包时,都要手动输入类似下面的一长串字符,真的是有点烦。

E:\Qt\Qt6.4\6.4.1\mingw_64\bin>windeployqt.exe E:\Qt\Qt6source\CH15\CH1502\LangSwitch\release\LangSwitch.exe

那有没有什么其它的工具,避免这个烦人的事情呢? 答案是:QT没有

然鹅,但是,但是,,,,,

QT没有,不代表我们就要一直受这个鸟气,经过本人研究,还真的琢磨出一个曲线救国的好办法,不需要打开命令行cmd,也不需要输入任何字符,只要点一下鼠标,就可以一键完成打包的所有动作,也就是说,只要是有手的人,就可以完成打包,真正的傻瓜式操作,绝对可靠。有兴趣的同学,请参考本人以下链接文章【windeployqt实现一键打包的方法】:

====================================================

地址如下:

windeployqt实现一键打包_zchill的博客-CSDN博客

====================================================

Windeployqt 打包,缺少DLL 的原因分析,解决方法相关推荐

  1. ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析解决方法

    ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析解决方法 参考文章: (1)ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析解决方法 (2)ht ...

  2. msvcr100.dll丢失原因及解决方法

    2019独角兽企业重金招聘Python工程师标准>>> msvcr100.dll为Visual Studio 2010的一个动态链接库,如果某程序是用它开发出来的,那么该程序的运行就 ...

  3. 用计算机计数 常常出错怎么办,提示“ultra dma crc错误计数”如何解决?原因分析+解决方法...

    电脑经过了一段的使用时间,硬盘难免会出现一些问题,最近有位win7系统用户使用鲁大师对硬盘进行扫描时,系统却提示"ultra dma crc错误计数",用户不知道怎么解决这个问题, ...

  4. Microsoft JScript 运行时错误: 缺少对象,原因分析

    今天接到一个任务,原因是一个不知道的jsp页面,在点击关闭一个div面板时发生错误: Microsoft JScript 运行时错误: 缺少对象,原因分析 然后百度了一番,  是某处的JavaScri ...

  5. [css] 父元素下有子元素,子元素也有高度但父元素的高度为何为0呢?分析下可能出现的原因及解决方法

    [css] 父元素下有子元素,子元素也有高度但父元素的高度为何为0呢?分析下可能出现的原因及解决方法 父元素塌陷父元素在文档流中高度默认是被子元素撑开的,当子元素脱离文档流以后,将无法撑起父元素的高度 ...

  6. python打包软件后报错 :SyntaxError: Non-UTF-8 code starting with ‘\x90‘ in file 的原因及解决方法

    本篇文章主要讲解,python打包软件后报错 :SyntaxError: Non-UTF-8 code starting with '\x90' in file 的原因及解决方法 作者:任聪聪 报错说 ...

  7. 计算机缺少网络连接,电脑提示找不到宽带连接的原因及解决方法

    最近有不少用的用户反映说,电脑在重装完系统后,进行宽带连接的时候,电脑却出现电脑找不到宽带连接的提示,导致宽带无法正常连接,这是怎么回事呢?今天U大侠小编就和大家说说电脑提示找不到宽带连接的原因及解决 ...

  8. 3d缺少html文件,3dmax打开时显示缺少外部文件的原因及解决方法

    为什么每次打开3DMAX都显示缺少外部文件?在做3dmax模型贴图或者下载模型之后,经常会出现缺少外部文件的情况,这是怎么回事?遇到这一情况又该如何解决呢?接下来小编就给大家整理了用3dmax打开模型 ...

  9. Python 打包后有黑色的窗口的原因和解决方法

    本篇文章主要讲解:Python 打包后有黑色的窗口的原因和解决方法 日期:2022年2月19日 现象说明 打包后打开exe文件会有黑色的cmd框 主要原因 使用的pyinstaller 打包的命令不对 ...

最新文章

  1. python怎么去重_python列表如何去重
  2. Linux高级权限管理
  3. 从入门到入土:Python实现爬取某站视频|根据视频编号|支持通过视频名称和创作者名称寻找编号|以及python moviepy合并音频视频
  4. 单元测试实践的主要问题与解决(2)
  5. C++学习008-delete与delete[]的差别
  6. 汤立波:车联网最新发展动态
  7. paip.提升效率---源码生成流程图工具
  8. Vegas哪个版本最好用?
  9. python通讯卡_如何使用树莓派连接EM-18RFID阅读器模块 并通过Python脚本从一些RFID卡访问信息...
  10. android 4.4 x86 iso,android x86官方版下载_android x86 4.4 iso 官方最新版[网盘资源]_零度软件园...
  11. photoshop中如何在6寸相纸上打印1寸照片10张2X5模式(自动填充模式)
  12. Mybatis批量插入数据到Oracel
  13. 小时代3刺金时代好看吗?
  14. 傅里叶分析的方方面面:复正弦、负频率
  15. 【自动驾驶】Frenet坐标系与Cartesian坐标系(二)
  16. 关于报错An unexpected error occurred: “https://registry.yarnpkg.com/react: socket hang up“
  17. 设计原则 - 开闭原则
  18. 树莓派+DS18B20温度传感器+yeelink物联网云
  19. Ubuntu16.04安装搜狗输入法,以及解决不能输入中文的办法
  20. Commonly Used Afx Functions

热门文章

  1. 软件设计中,何为重构?
  2. python set集合排序,Python set的集合操作
  3. Keil5 逻辑分析仪的使用
  4. 奥尔所有java游戏_奥尔-少年侦探JS
  5. 计算机房等电位接地规范,什么是机房六面体等电位接地 ?
  6. Gitee(码云)、Github同时配置ssh key
  7. Java系列之——Java面试题
  8. MJ优质博主清单;把ChatGPT调教为英语私教;绝美SD Prompt手册;AgentGPT体验全记录;2项AI工具最强更新 | ShowMeAI日报
  9. vue前台获取后台数据并导出excel
  10. 怎样防止苹果系统更新_【干货】安卓系统防止更新时丢失账号