Windeployqt 打包,缺少dll 的解决方法

news2024/11/27 12:33:26

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 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实现一键打包的方法】:

https://blog.csdn.net/zchill/article/details/128974201

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/336007.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20230210使AIO-3568J开发板在Android12下调通3个USB

20230210使AIO-3568J开发板在Android12下调通3个USB 2023/2/10 10:00 0、默认编译RK3568的Andorid12的rk3568-evb2-lp4x-v10.dts,2个USB2.0接口的鼠标可以用。 并列USB3.0接口的上面的鼠标不能用。USB3.0接口下面可以连接ADB。 vcc5v0_host: vcc5v0-host-regula…

邀您参赛!DCIC 2023「科技金融欺诈风险识别」算法赛正在报名中

近年来,跨境赌博、电信网络诈骗、黑产等外部欺诈违法犯罪形势日益严峻,呈现线上化、产业化、团伙化等特征,国家、监管机构及银行自身都高度重视反欺诈治理工作,坚决守护人民群众的财产安全。 为进一步打击外部欺诈违法犯罪行为&am…

CentOS7 ifconfig(或 ip addr)命令不显示IP地址

问题(因为当时没有存图 所以这个图上是网上找的 )解决办法第一:可能是本地服务没有开启,检查本地服务。如图所示,检查这两个服务是否开启。注:如何快速找到服务 可以把光标放在其中一个上面 然后按下VM就可…

硬盘分类及挂载硬盘知识补充和介绍

一、硬盘介绍Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘1.对于IDE硬盘,驱动器标识符为"hdx~",其中"hd"表明分区所在设备的类型,这里是指IDE硬盘了。"x"为盘号(a为基本盘,b为基…

endo-BCN-PEG4-Palmitic,环丙烷环辛炔四聚乙二醇-Palmitic包装灵活

endo-BCN-PEG4-Palmitic,endo环丙烷环辛炔四聚乙二醇-Palmitic反应特点:endo-BCN-PEG4-Palmitic 酯在其末端含有一个 Palmitic基和一个 BCN 基。对点击试剂来说同样会通过不同的小分子PEG进行连接,BCN-PEG-acid、BCN-PEG-NHS ester、BCN-PEG-…

软件测试—对职业生涯发展的一些感想

目录:导读 职场生涯 1、短期规划 2、长期规划 自身定位 1、你在哪儿? 2、你想要什么? 3、你拥有什么? 4、你需要做什么?什么时候做? 5、淡定啊淡定 最近工作不是很忙,有空都是在看书&a…

多传感器融合定位十一-基于滤波的融合方法Ⅱ

多传感器融合定位十一-基于滤波的融合方法Ⅱ1. 编码器运动模型及标定1.1 编码器基础知识1.2 编码器运动模型1.2.1 旋转半径求解1.2.2 角速度求解1.2.3 线速度求解1.2.4 位姿求解1.3 编码器的标定1.3.1 轮子半径标定1.3.2 轮子与底盘中心距离标定2. 融合编码器的滤波方法2.1 核心…

调用chatgpt的api, 必须知道的三件事

牙叔教程 简单易懂 调用api的代码 let url "https://api.openai.com/v1/completions"; let answer await axios // 使用axios发送post请求.post(url, data, { headers: headers }).then((res) > {return res.data.choices[0].text.trim();}).catch((err) >…

谈谈会话管理

客户端和服务器之间进行数据传输遵循的是HTTP协议, 此协议属于无状态协议(一次请求对应一次响应, 响应完之后断开连接), 服务器是无法跟踪客户端的请求, 通过cookie技术可以给客户端添加一个标识, 客户端之后发出的每次请求都会带着这个标识从而让服务器识别此客户端, 但由于co…

PostgreSQL入门

PostgreSQL入门 简介 PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES, 版本 4.2为基础的对象关系型数据库管理系统(ORDBMS) 支持大部分SQL标准并且提供了许多现代特性 复杂查询外键触发器可更新视图事务完整性多版本并发控制 …

引导滤波code

文章目录1. 原理概述2. 实验环节2.1 验证与opencv 库函数的结果一致2.2 与 双边滤波比较2.3 引导滤波应用,fathering2.3 引导滤波应用,图像增强2.4 灰度图引导,和各自通道引导的效果差异2.5 不同参数设置影响3. 参考引导滤波1. 原理概述 引导…

VHDL语言基础-状态机设计-ASM图法状态机设计

目录 有限状态机的描述方法: ASM图: 状态转移图: 状态转移列表: MDS图: ASM图法状态机设计: ASM图的组成: 状态框: 判断框: 条件框: 状态框与条件框…

Python之FileNotFoundError: [Errno 2] No such file or directory问题处理

错误信息:FileNotFoundError: [Errno 2] No such file or directory: ../AutoFrame/temp/report.xlsx相对于当前文件夹的路径,其实就是你写的py文件所在的文件夹路径!python在对文件的操作时,需要特别注意文件地址的书写。文件的路…

上海亚商投顾:三大指数集体调整 消费板块逆市活跃

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。市场情绪三大指数今日集体调整,沪指全天弱势震荡,创业板指盘中跌超1%。旅游、食品、乳业等大消费板块…

渗透测试 -- 网站信息收集

数据来源 01 网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言(php、java、...)、数据库(Mysql、...)为什么要了解这些? 举个例子:发现了一…

vue3组件库项目学习笔记(八):Git 使用总结

目前组件库的开发已经接近尾声,因为这次是使用 git 进行协作的开发模式,在团队协作的时候遇到很多的问题,开发过程中发现小伙伴们对于 git 的使用还不是很熟练,这里就简单总结一下常用的 git 的操作,大致有&#xff1a…

Revit快速材质切换:同一墙面赋予不同材质的方法

一、Revit中对同一墙面赋予不同材质的方法 方法1:零件法 重点:通过工作平面面板上的设置工作平面命令选取正确的面取消勾选通过原始分类的材质,如图1所示 方法2:拆分构造层绘制一道墙体,选择创建的墙体,单击…

判断元素是否在可视区域

前言 在日常开发中,我们经常需要判断目标元素是否在视窗之内或者和视窗的距离小于一个值(例如 100 px),从而实现一些常用的功能,例如: 图片的懒加载列表的无限滚动计算广告元素的曝光情况可点击链接的预加…

关于TL431和光耦PC817反馈控制部分电阻取值计算

计算R4和R3。TL431的R端流入电流2uA,为了保证取样精度,即不让TL431的R端吸取电流参与R3和R4的分压,可以设置R4的电流大于TL431的R端吸取电流的100倍,此时工程实践上基本可以忽略掉TL431的R端吸取电流的影响了。R4电流最小为2uA*10…

CSS基础:选择器和声明样式

CSS概念 CSS(Cascading Style Sheets)层叠样式表,又叫级联样式表,简称样式表 CSS用于HTML文档中元素样式的定义 使用css让网页具有美观一致的页面 语法 CSS 规则由两个主要的部分构成:选择器和声明样式 选择器通常…