QT windeployqt.exe的使用与避坑(windows平台)

介绍

windeployqt.exe是Qt自带的工具,用于创建应用程序发布包。 简单来说,这个工具可以自动地将某程序依赖的库、资源拷贝到其所在目录,防止程序在其他电脑上运行报找不到库的错误。 这里贴上官方文档:https://doc.qt.io/qt-5/windows-deployment.html

原理

windeployqt.exe工作原理很简单,它会到当前的环境变量PATH配置的搜索路径中,查找应用程序所需要的库和资源,拷贝到应用程序目录中。

使用

1、先从开始菜单中打开「对应版本的Qt」命令行终端界面,如下图:

2、命令行中输入

windeployqt.exe 应用程序完整路径

我们知道,Qt项目路径不能包含中文,所以为了保险起见,应用程序路径中不要包含中文。另外,如果应用程序路径中包含空格,需要用双引号将整个路径字符串包裹起来。

回车即可执行发布命令。输出界面如下图所示:

进入到应用程序目录可以看到,目录中增加了很多依赖库和数据文件。如下图所示:

大体上的流程只有这两步。 整个发布过程看似比较简单,但是其中还是存在一些坑的。

坑点一:未使用Qt的命令行终端执行发布命令,导致库版本拷贝错误

下面是直接使用系统cmd命令行发布软件的过程:

直接打开cmd命令行,进入到windeployqt.exe所在目录 输入:windeployqt.exe 应用程序完整路径,回车。

这样发布出来的应用程序可能会崩溃或者出现以下问题:

面对这个错误没有经验的话,很难解决,特别是软件直接崩溃的话,更无从下手。要解决这个问题,估计至少要半天时间。

0xc000007b是一个经典错误,它代表着程序启动时使用了不正确的版本的库,导致无法正常运行。例如,64位的软件使用了32位的库。

所以,发生上面错误的原因是,windeployqt.exe从系统的环境变量路径PATH中找到了其他版本的依赖库,而这个依赖库并不是我们的应用程序真正依赖的那个版本。当你的计算机中安装了很多软件,某些软件会添加系统环境变量,指向自己的bin目录;抑或是安装了几个版本的Qt开发环境时,难免会导致搜索路径中有同名称的、不同版本的库存在,这些情况下,库版本错乱的问题经常发生。

在Qt命令行中输入 echo %PATH%,可以查看当前Qt使用的环境变量:

上图中红色框内是此版本Qt的库文件目录,已添加到当前PATH环境变量的最开头,将会被windeployqt.exe优先搜索到。如此一来,Qt相关的库便不会产生库版本错误的问题。

坑点二:未使用与Qt版本对应的windeployqt.exe

发布软件时,必须确定项目开发所使用的Qt版本,并使用此版本Qt安装目录下的windeployqt.exe完成发布过程。每个Qt版本中的工具只有在此Qt版本下才能确保正常工作,混用会引入未知的风险。

坑点三:发布时,默认文件不会覆盖

在Qt命令行终端中多次执行发布命令时,已发布到应用程序文件夹中的文件默认不会被覆盖。当你第一次发布出问题时,调整好环境后再次发布并不会覆盖已存在的文件。这可能和我们期望的不太一样。可以通过添加强制覆盖参数--force强制覆盖已存在的文件,如下图所示:

建议始终添加--force参数,防止因文件未覆盖而出现问题。

细节问题

Qt命令行启动时有一行提示:

上面打包输出界面的红框中,有这样一行警告:

Warning: Cannot find Visual Studio installation directory, VCINSTALLDIR is not set.

意思是说,因为我们没有运行vcvarsall.bat,所以VS的环境变量没有配置好,所以不会拷贝VS相关的依赖库。

vcvarsall.bat是VS的自带的配置环境变量的批处理文件。以VS2010为例,它位于路径 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC 下。它属于VS命令行工具的一部分,这里不多说,直接去看VS官网文档即可: 通过命令行使用 Microsoft C++ 工具集。

通常我们使用VS的CMD命令行工具时,配置编译环境大家比较熟悉的应该就是vcvars32.bat。这个文件他在哪里呢?

它在我们的VirualStudio的安装目录深处:

      VS2022的路径   C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build

                 

   

    当我们执行vcvars32.bat这个命令时,生成的命令行环境下用nmake只能编译32位版本的目标代码,如今随着硬件性能的提升,

基本上大多数的电脑运行的操作系统平台都是64位的,32位的比较少了。那么怎样配置编译环境编译x64的目标代码呢?

    其实大概从VS2010之后开始,VS就提供了好几个配置环境的批处理文件,如上图。

    其实最主要的就是这个 vcvarsall.bat 文件了,其他几个看文件名基本都能理解。

  如果是要在命令行生成 32位代码,就执行vcvarsall x86;

  如果是要在32位系统下生成64位代码,就执行vcvarsall x86_amd64;

 如果是要在64位系统下生成32位代码,就执行vcvarsall x86或vcvarsall amd64_x86;

 如果是要在64位系统下生成64位代码,就执行vcvarsall x64;

 如果是要生成arm平台的代码,就执行vcvarsall x86_arm ,如果操作系统是64位的就运行vcvarsall amd64_arm

具体如下图:

那我们就尝试运行vcvarsall.bat来配置一下VS的环境。整个过程的完整操作过程界面如下:

可以看到,那一行警告不见了。同时,应用程序目录下多了两个库文件,如下图:

这样发布出来的目录就带上了VS的依赖库,拷贝到没有安装VS的电脑上亦可以运行。

命令帮助

除本文提及的基本参数,发布程序还提供了一些额外参数选项,可以通过查看命令帮助了解。

在Qt命令行终端中输入

windeployqt.exe -h

可以查看命令帮助,如下图所示:

限于篇幅,这里不再进一步讲解,大家可以自己动手尝试。

结语

总体来说,虽然发布步骤比较简单,但是有坑有细节,自己尝试操作几次就能熟悉了。里面的坑笔者踩过,会浪费很多时间,希望大家能避免踩坑,提高效率。

本文原创首发于公众号/头条号 Qt未来工程师。

zhouyj-csdn
关注 关注
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用windeployqt.exe打包QT工程,windows系统可执行程序
May-gemini的博客
11-02 1156
因为自己打包qt程序遇到点问题,提示0xc000007b错误,发现是因为打包工具和工程编译工具不对应导致,于是为了记录打包方法,有了此篇文章,记录使用windeployqt.exe打包qt工程在windows系统的可执行文件。
windeployqt.exe使用避坑windows平台
撬动未来的支点的专栏
03-01 1万+
介绍 windeployqt.exeQt自带的工具,用于创建应用程序发布包。 简单来说,这个工具可以自动地将某程序依赖的库、资源拷贝到其所在目录,防止程序在其他电脑上运行报找不到库的错误。 这里贴上官方文档:https://doc.qt.io/qt-5/windows-deployment.html 原理 windeployqt.exe的工作原理很简单,它会到当前的环境变量PATH配置的搜索路径中,查找应用程序所需要的库。 使用 正确的用法: 1、先从开始菜单中打开对应版本的Qt命令行界面,如下图: 2
Qt程序打包命令windeployqt.exe使用方法
最新发布
hmwz0001的博客
05-11 308
三、把Qt生成的debug或release文件夹中的bin文件兲中的内容拷贝至D:\temp文件夹中,并在文件管理器的路径行中输入cmd三个字并回车。一、该命令是Qt自带的程序,位于d:\Qt\Qt5.14.2\5.14.2\mingw74_64\bin文件夹中。完成后还要把所有用到的第三方动态库拷贝到temp文件夹中。因为静态库会与exe文件打包在一起。完成后还要把所有用到的第三方动态库拷贝到temp文件夹中。因为静态库会与exe文件打包在一起。秋风写于淄博,业务合作与技术交流:q375172665。
Qt使用自带打包工具windeployqt.exe
qq_37636293的博客
09-23 402
使用everything软件查找windeployqt.exe路径找到图片路径后,将已经编写好的qt程序,release发布,发布后会生成一个单独的exe文件。
QT使用windeployqt部署发布及其精简
itas109的专栏
05-29 1万+
QT技巧 - QT使用windeployqt部署发布及其精简 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 目录 QT技巧 - QT使用windeployqt部署发布及其精简 1.前言 2.Windows部署工具 3.创建程序安装包 4.应用程序依赖关系 4.QT插件 5.精简windeployqt的依赖文件 5...
Qt程序打包——使用自带windeployqt.exe工具查找依赖库
Zhenggenno_1的博客
05-26 1万+
        最近尝试了一下Qt自带的windeployqt.exe程序部署工具,在按照网上教程的使用过程中遇到了一些问题,当然也可能只是个例,在此分享一下解决方法,希望能够对于遇到相同问题的人有所帮助。        首先,Qt自带的程序部署工具windeployqt.exe位于安装目录:D:\Qt\Qt5.10.0\5.10.0\mingw53_32\bin下(因人而异),在使用该工具之前,...
Qt一键部署配置(Qt程序打包windeployqt
mahuifa的博客
06-02 2852
别再傻乎乎的打开Qt命令行工具,用windeployqt hello.exe打包程序了,快来试试这种方法
windeployqt.exe
11-04
Qt 官方开发环境使用的动态...因此 Qt 官方开发环境里自带了一个工具:windeployqt.exe,可以自动连接dll,方便我们进行项目打包,但是有时会发现自己的qt版本中缺少这个exe,这时需要手动下载添加到mingw的bin目录下
qt-unified-windows-x64-4.6.0-online.exe
03-05
qt-unified-windows-x64-4.6.0-online.exe安装包及国内映射源地址。安装速度快,给赶时间的网友。解压安装,把脚本代码复制到cmd种回车即可。 qt-unified-windows-x64-4.6.0-online.exe安装包及国内映射源地址。安装...
anki-2.1.53-windows-qt6.exe
06-03
anki-2.1.53-windows-qt6.exe,官网镜像。 anki介绍:Anki是用来记忆的,包括但不限于记单词学语言,还可以用来记忆古诗词,背生物化学地理物理等等。Anki的原理是间隔重复,算法基于Supermemo的SM2,它背后的算法...
texstudio-4.0.0-win-qt6.exe
09-28
TeXstudio是 latex 的 IDE,方便好用,功能强大
qt-opensource-windows-x86-5.13.2.exe
04-26
qt-opensource-windows-x86-5.13.2.exe
QT】C++/Qt使用Qt自带工具windeployqt打包
weixin_44404541的博客
12-19 617
运行项目debug或者release 将运行后的可执行文件单独放到一个文件夹中 根据项目使用的kits来选择Qt的打包工具 打开工具后移动到exe文件夹下执行windeployqt xxx.exe 预览图
Qt程序打包发布方法(使用官方提供的windeployqt工具)
exlink2012的专栏
07-21 2221
Qt程序打包发布方法(使用官方提供的windeployqt工具) Windows下发布方法
qt中的windeployqt使用
weixin_43124720的博客
05-07 1029
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xujidong1576324301/article/details/80504410 </div> <link rel="stylesheet" hr...
Qt项目打包缺少windeployqt解决
anbuqi的博客
11-04 4382
Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行。因此 Qt 官方开发环境里自带了一个工具:windeployqt.exe。可以解决dll的连接问题,但是有时会发现自己下载的qt版本缺少windeployqt.exe,会导致无法打包以下是解决办法:首先到这个网站下载windeployq...
C++Qt5+win10+MSVC2015 64bit构建程序,Release编译成功后使用windeployqt.exe发布程序使用win7出现缺少MSVCP140.dll!!!...
weixin_30879169的博客
07-26 772
Windows/system32中找到MSVCP140.dll,放置发布的文件夹中,会出现 这表明程序运行缺少必要的dll,网上搜索解决方法,一般会推荐使用一些软件进行打包,但我使用windeployqt.exe进行软件发布!一样出现上述问题!一度怀疑是不是 win10下开发的软件在win7下不能运行,将源码包换到win7下构建发布一样的问题!!! 那么说明win7/10Release的软...
qt打包windeployqt方法使用介绍
wushuang443的专栏
03-29 1289
1,先在e盘下面新建一个文件夹,execute 2,把你的exe放进去。 3,打开qtQt5.9.9(MinGW5.3.0 32-bit)命令行工具 4,在里面输入命令 e: cd execute windeployqt O3pro.exe 接下来就会把那些依赖dll全部给自动拷贝过来。上面的e盘是我举例,可以根据自己的要求去放。 ...
教你使用windeployqt工具来进行Qt的打包发布
热门推荐
拜小白的成长之路,告别小白
06-15 6万+
Qt打包发布。 Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行。 因此 Qt 官方开发环境里自带了一个工具:windeployqt.exe
qt部署工具windeployqt.exe 下载
10-24
要下载Qt部署工具windeployqt.exe,你可以按照以下步骤进行操作: 1. 首先,打开Qt官方网站(https://www.qt.io/)。 2. 导航到“下载”页面,你可以在顶部菜单栏找到该链接。 3. 在下载页面上,你会看到不同版本的Qt可用。根据你的需求选择合适的版本(例如,Qt for Windows)。 4. 选择你想要的版本后,页面将跳转到另一个页面,显示可用的下载选项。 5. 在下载选项中,找到“工具”部分,并选择“WinDeployQt”工具。 6. 单击下载链接后,系统将开始下载windeployqt.exe文件。 7. 在下载完成后,找到下载文件的保存位置,并将其解压到你希望部署Qt应用程序的文件夹中。 现在,你已成功下载和获取了windeployqt.exe。它是一个将Qt应用程序所需的依赖项和库文件复制到正确位置的命令行工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • VS自带工具:dumpbin的使用查看Lib,dll等 26859
  • 平面上两直线的夹角求法解析 17863
  • CPK 9662
  • Visual Studio 遇到了异常。这可能是由某个扩展导致的 5586
  • C++中cos,sin,asin,acos这些三角函数操作的是弧度,而非角度(转) 5075

分类专栏

  • 文件夹监视 1篇
  • OpenGL 1篇
  • OpenCV 1篇
  • C/C++ 19篇
  • MFC 20篇
  • 线程 1篇
  • VS2010 14篇
  • Delphi 1篇

最新评论

  • QT windeployqt.exe的使用与避坑(windows平台)

    ·Nasus➹_: 不错,写得很详细表情包

  • Windows10编译安装OpenSceneGraph(OSG)教程

    JJy_3754: 在哪里添加呀

  • Windows10编译安装OpenSceneGraph(OSG)教程

    度年.: 按照上面的步骤一步一步做的不知道怎么回事也是生成的时候显示找不到标识符表情包

  • Windows10编译安装OpenSceneGraph(OSG)教程

    zhouyj-csdn: 不正常,这种问题一般是没添加依赖库文件导致的

  • Windows10编译安装OpenSceneGraph(OSG)教程

    UPC.血糖: 为什么生成的时候,全是找不到标识符?这个正常吗?

大家在看

  • 微尺度气象数值模拟—大涡模拟技术
  • 是什么让以太坊从众多公链中脱颖而出
  • 【Hugging Face全面拥抱LangChain:全新官方合作包】
  • 【AI绘画】对普通人来说,Stable diffusion 和 Midjourney 怎么选?两者有何区别? 435
  • 【解读AI大模型,从了解token开始】 476

最新文章

  • Sqlite3 生成lib库文件
  • Windows10编译安装OpenSceneGraph(OSG)教程
  • windows画图板 ESL转RGB 实现区间渐变色
2024年1篇
2023年1篇
2022年1篇
2021年7篇
2020年4篇
2019年4篇
2018年8篇
2017年13篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码大芬营销型网站建设西乡优秀网站设计坪山阿里店铺托管坪地关键词按天计费罗湖百度爱采购横岗网站优化软件吉祥关键词按天扣费福田网络广告推广东莞SEO按效果付费坪地百姓网标王荷坳网站排名优化罗湖阿里店铺托管松岗百度seo爱联百搜词包广州企业网站制作盐田关键词按天计费坂田百度爱采购坪山阿里店铺运营南澳优化坪山设计公司网站沙井seo同乐网站建设设计深圳企业网站改版布吉网站推广大芬网站优化按天收费大运百度爱采购福田阿里店铺运营沙井阿里店铺运营坪山百搜词包吉祥网站设计模板歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化