Qt打包含有第三方库的软件为应用程序——CQtDeployer

1.下载Dependencies并安装,File打开你要打包的exe文件,然后就会告诉你运行这个程序需要哪些dll库

  1. 下载CQtDeployer并安装

https://github.com/QuasarApp/CQtDeployer/releases

  1. 打开终端,cd到你的exe所在文件夹

笔者的路径是这个,那我就在终端运行这条指令 进入我的exe所在路径

bash 复制代码
cd /d "D:\mydocuments\Qt_project\DropletSubsystem0323\CQt"

然后运行下面的指令打包。注意里面的qmake.exe 、 cqtdeployer.exe、以及最后的文件夹的名字,都是我的工程的,你要根据你的实际路径替换这里,文件夹名字也要替换,你想让打包完的文件夹叫啥就是啥

bash 复制代码
"C:\Program Files\CQtDeployer\1.6\cqtdeployer.exe" -bin DropletSubsystem.exe -qmake "D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\qmake.exe" -targetDir "./DeployResult"
  1. 上面的步骤只打包qt需要的库,如果你的工程里有第三库,这个命令并不包含这些库在内,需要你先把这些第三方库的路径告诉它,它才可以帮你打包进去!!,这时,我们最开始使用dependences列出的dll库路径 就派上用场了,当然你要有lib库的话,这个路径也要告诉它。

比如,我的.pro文件里写的库路径是这样的

cpp 复制代码
INCLUDEPATH += "C:/Program Files/IVI Foundation/VISA/Win64/Include"

# 指向标准的 VISA 库文件目录
LIBS += -L"C:/Program Files (x86)/IVI Foundation/VISA/WinNT/Lib_x64/msc/"

# 链接导入库
LIBS += -lvisa64

INCLUDEPATH += "D:/mysql/mysql-connector-c++-8.0.33-winx64-debug/mysql-connector-c++-8.0.33-winx64/include/jdbc"


unix|win32: LIBS += -L$$PWD/../../../../mysql/mysql-connector-c++-8.0.33-winx64/mysql-connector-c++-8.0.33-winx64/lib64/ -lmysqlcppconn -llibcrypto -llibssl

INCLUDEPATH += $$PWD/../../../../mysql/mysql-connector-c++-8.0.33-winx64/mysql-connector-c++-8.0.33-winx64/lib64
DEPENDPATH += $$PWD/../../../../mysql/mysql-connector-c++-8.0.33-winx64/mysql-connector-c++-8.0.33-winx64/lib64

那我最终的包含所有库的打包命令就是这样的:

bash 复制代码
"C:\Program Files\CQtDeployer\1.6\cqtdeployer.exe" -bin DropletSubsystem.exe -qmake "D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\qmake.exe" -libDir "C:/Program Files/IVI Foundation/VISA/Win64/Include" -libDir "D:/mysql/mysql-connector-c++-8.0.33-winx64/mysql-connector-c++-8.0.33-winx64/lib64" -targetDir "./DeployResult" -deploySystem true

这条命令里,带引号的都是你电脑上相关文件的路径和你的文件夹名称,以及bin后面是你的exe名称,这些都是要替换成你实际的,其他字符就是命令本身的名称

-deploySystem true 参数值为 true 意思是 启用系统库部署

如果没有后面的true 会报错:Error: Missing argument

-libDir 后面跟的就是库路径,不管是动态库还是静态库。方便起见,可以把所有的库文件都放在一个文件夹里,然后运行这个命令一次性打包完成,就不用手动再添加库文件了。

  1. 打包完成以后,我们需要在一个没有开发环境的电脑上运行一下,这样才知道是不是缺东西,可以使用windows 沙盒来模拟这一步。

支持这个功能的系统:Windows 10 专业版/企业版/教育版(1903 或更高) 或 Windows 11 专业版/企业版/教育版

系统架构: 64位处理器(AMD64 或 ARM64)

在任务栏搜索框输入 打开或关闭 Windows 功能 ,打开 在弹出的列表中找到 Windows 沙盒 (SandBox)勾选它,点击"确定" 系统会搜索并安装所需文件,安装完成后重启电脑,或者在微软商店也可以安装,然后在任务栏搜索

就打开一个全新的虚拟windows系统,可以直接把打包好的文件夹放进去,然后运行exe程序,看是不是缺东西。

相关推荐
知行合一。。。2 小时前
RAG--03--Milvus基本用法
数据库·oracle·milvus
2601_962071572 小时前
【Java报错已解决】org.springframework.beans.factory.BeanCreationException
java·开发语言
TDengine (老段)2 小时前
TDengine 线程模型 — 网络、调度、执行
大数据·数据库·物联网·制造·时序数据库·tdengine·涛思数据
淡海水3 小时前
07-04-并发-ConcurrentBag-T-工作窃取WorkStealing算法
开发语言·算法·c#·bag·concurrent·workstealing
上学的小垃圾3 小时前
01-数据库系统概述
数据库
CS_Zero4 小时前
C语言sizeof是函数吗?
c语言·开发语言
二进制漫游记4 小时前
FastAPI项目集成 Qdrant向量数据库+阿里云Embedding完整实战(工具封装+业务调用)
数据库·python·阿里云·embedding
2501_928996224 小时前
GPT-4o换DeepSeek迁移成本多少?中科热备解析API聚合平台技术账本
前端·数据库·人工智能
-今昭-4 小时前
《V2V 迁移实战:将 VMware 虚拟机转为 OpenStack 可用 Glance qcow2 镜像》
开发语言·python
泡干脆面就番茄6 小时前
MySQL_子查询_分页查询与联合查询详解
数据库·mysql