首页 > 其他分享 >QT项目打包成exe文件-非常详细(侧重于解决输出的exe文件没有原项目功能的问题)

QT项目打包成exe文件-非常详细(侧重于解决输出的exe文件没有原项目功能的问题)

时间:2024-10-19 20:48:44浏览次数:9  
标签:windeploygt 文件 exe QT 项目 dll 文件夹

写在前面:

 我是研二学生,用qt给老师项目做的一个辅助软件。项目要验收,所以需要打包qt项目成exe文件,但是我死活弄不出来,来回搞了两三天才弄好。特此写下第一篇博客,记录这个过程,并给同样困扰的新手朋友们提供一个方法。我是一个新手,期待大家的批评指正。

打包流程:

 1、获取初始exe文件

一般的博客是先将QT使用Release编译,在项目文件夹中新生成的bulid-xxx-Dektop-xxx-release地址下的release文件夹中得到exe文件。

但是我在release中得到的exe文件,在经过dll文件配置后死活都不能执行。所以我和其他的博客的区分就在这里。

我推荐大家在bulid-xxx-Dektop-xxx-Debug地址下的debug文件夹中得到exe文件。换句话说,不用将编译调成Release编译,直接去找已经运行过的项目中的bulid-xxx-Dektop-xxx-Debug地址下的debug文件中的exe文件。

将在debug文件夹下得到的exe文件单独存放在一个新建的文件夹中。

2、使用windeployqt 进行dll文件的配置(粗配置)

这一步有人推荐使用使用QT终端,或者win+r  cmd,来调用windeployqt。这样也可以但是我觉得麻烦,推荐大家一种简单的使用windeployqt 的方法。

打开你电脑里qt的安装路径中的mingw文件夹(如果你用的是msvc或者其他的那就打开对应文件夹下的bin文件夹,对应好你使用的位数 64/32),我电脑里是这样的路径:D:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin。在此文件夹中找到windeployqt.exe文件。

将你刚才新建文件下保存的项目输出exe文件拖动到这个windeploygt.exe上,就可以自动使用windeploygt对你的exe进行dll的配置了。

配置好后会变成这样。但是注意:windeploygt并不是一个很好用的配置dll文件的工具,如果你使用了第三方库,比如说opencv,那么windeploygt就不会给你配相应的dll文件。对于只使用qt库的项目可以略过步骤3(但是也可能出现QT的dll文件也没有配好的问题,windeploygt真的不好用,但是一般也就一两个qt的dll文件没配好,可以根据打开exe文件的错误提示手动添加dll文件)。

3、补充dll文件(精配置)

在图片中1的位置运行项目,在2的窗口处会输出一些包含dll库的信息。

我的建议是,对于一些功能不是很多的项目,把你的功能运行以下以后,在复制2窗口的信息,然后手动提取其中包含dll文件的信息(我的项目不是很麻烦,所以这一步也不难)。最后我得到项目需要的dll库的内容大致如下:

这是我手动删除系统dll文件的内容,如果不删掉也可以,因为下一步就是将这些信息发给GPT,让它给你写一个脚本,将这些非系统dll文件复制到你的在第一步新建的文件夹中。我的脚本内容大致如下,可以看到其实也就一个opencv的dll文件缺失,项目需要的非系统dll文件大部分都在windeploygt中配置好了。

(我问gpt的时候,它告诉我用一个专门给exe配置dll文件的软件,但是那玩意是真的不好用,是在配不好的可以找一找用一下)

至此已经将项目输出的exe所需的所有dll文件(系统dll文件不需要配置)配置完毕,用户下载好文件夹就可以点击文件夹中的exe使用该软件。但是毕竟这样一个文件夹不太好传输,所以各位可以考虑以下第五步的虚拟文件打包。

5、虚拟文件打包

推荐使用一个软件:Enigma Virtual Box

安装过程很简单,跟着步骤走就可以。安装完成后按下图的步骤导入第一步新建文件夹中的exe文件

然后导入配置好dll文件的文件夹。

然后点击process就可以打包了,打包

打包后会生成这样一个exe文件,这就是一个不需要任何外设文件点击就可以使用的可执行文件了。

标签:windeploygt,文件,exe,QT,项目,dll,文件夹
From: https://blog.csdn.net/Heinrich2/article/details/143082902

相关文章

  • Qt中使用DXGI截取桌面图像
    文章目录一、概要二、DXGI图像截取的实现步骤三、DXGI常用接口介绍1.D3D11CreateDevice接口参数说明D3D_DRIVER_TYPE常见类型D3D11CreateDevice函数的使用示例2.QueryInterface接口参数说明3.GetAdapter4.EnumOutputs5.DuplicateOutput代......
  • VTK9.3.1在Windows10+VS2022+Qt 5.14.2环境下编译安装以及VTK应用于QT
    文章目录概要搭建编译环境编译源代码VisualStudio2022+Qt使用VTK概要本文主要介绍VTK9.3.1如何在Windows10上使用VS2022和QT进行编译安装。搭建编译环境先从VTK官网下载VTK9.3.1的源码,VTK下载地址我们可以按照官方推荐的编译方式进行编译,首先设置三个文件夹......
  • 文件系统基础
    初识文件系统文件是以硬盘位载体存储在计算机上的信息集合,在系统运行时,计算机以进程为基本单位进行资源的调度与分配而在用户进行的输入、输出中,则以文件为基本单位。这就需要操作系统有一个文件管理系统。操作系统的文件管理系统需要关心以下内容:计算机中存放了各种各样的文......
  • php网站用什么修改数据库文件格式
    在PHP网站中修改数据库文件格式通常涉及以下几个步骤或工具:使用PHP脚本直接操作数据库:利用PHP的数据库扩展(如PDO,MySQLi)来执行SQL语句,实现数据表结构的修改。示例代码使用PDO修改表结构:<?php$dsn='mysql:host=localhost;dbname=testdb';$username='root';$passw......
  • php网站用什么修改数据库文件
    在PHP网站中修改数据库文件通常涉及以下几个步骤或工具:PHP代码直接操作:使用PHP内置的数据库扩展,如mysqli或PDO,来执行SQL查询,实现对数据库的增删改查操作。示例使用PDO连接MySQL数据库并更新数据:<?php$dsn='mysql:host=localhost;dbname=testdb';$username='root';......
  • 【编程入门】BMI.exe
    #include<bits/stdc++.h>usingnamespacestd;intmain(){   doubleh,w,b;   cin>>h>>w;   h/=100;   b=w/(h*h);   if(b>24)   {      cout<<"Toofat!"<<endl;      doublew24=......
  • HarmonyOS Stage 模型:进程、线程与配置文件之浅析
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。HarmonyOS的Stage模型为开发者提供......
  • Linux文件实时自动同步方案(基于inotify) 支持自定义目录、 不限主机数量、支持增删改
    实现细节可以直接跳到第3节3.实现细节关键词:自动同步Linux自动同步 Linux实时同步master同步slave master与slave文件实时同步 目录1.引言背景介绍方案概述方案特点2.技术选型inotifyrsyncShell脚本3.实现细节3.1前置配置1.权限设置2.安装inotify......
  • Qt 模态对话框属性
    exec()QDialogdlg(this);dlg.exec();setModal()QDialogdlg(this);dlg.setModal(true); //相当于dlg.setWindowModality(Qt::ApplicationModal);dlg.show();setWindowModality()QDialogdlg(this);dlg.setWindowModality(Qt::ApplicationModal);dlg.show();枚......
  • 【MySQL】设置二进制日志文件自动过期,从根源上解决占满磁盘的问题:通过修改 binlog_exp
    引言MySQL的二进制日志(binlog)文件记录了数据库中所有更改的详细信息,包括但不限于对数据的插入、删除、更新,对表和数据库的创建、更改、删除等操作。每一次这样的操作都会在二进制日志中生成一个新的日志事件,并被写入到一个新的二进制日志文件中。因此,如果数据库的活动量较......