window 利用Qt-windeployqt打包exe程序 一个简单的实例

news2024/11/18 21:41:00

用一个简单的实例展示下window 如何使用QT-windeployqt打包exe程序使得其可以在别的电脑上运行

一、release模式获得exe可执行文件

新建一个QT项目

 构建选择使用CMake

 base class选择QMainWindow

Kit Selection一定要注意,我选的是MinGW 32-bit

UI设计

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QProcess>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "./ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_pushButton_clicked()
{
    QString program = ui->lineEdit->text();

    QProcess *myprocess = new QProcess(this);
    myprocess->start(program);
}

选择Release模式,构建运行

查看运行结果

二、利用Qt-windeployqt打包exe程序

注意使用windeployqt是32位的还是64位的

你安装的QT可能有好多个windeployqt,不信你用Everything搜一下

如果你QT项目里面链接了外部库(非QT库),那么你一定要注意这些库是用MinGW-32构建得到的,还是MinGW-64构建得到的。可能不兼容!

MinGW-w64简介_itas109的博客-CSDN博客

打包exe程序

网上一些教程直接 告诉你运行 windeployqt my.exe 是极其不负责任的,有时候出了问题你可能都查不出来

QT-windepolyqt打包程序详细介绍_PRML_MAN的博客-CSDN博客

把前面得到的exe文件复制到一个干净的目录,然后打开cmd,或者直接打开MinGW 32

然后切换到你刚刚放置exe文件的目录

 选择自己需要的windeployqt.exe进行打包,这里应该和你使用的外部库也有关系,比如你的库是使用MinGW-32构建的,那么这里应该选择32位的

# 32位
D:\software\QT5\5.14.2\mingw73_32\bin\windeployqt.exe qt-test.exe

# 64位
D:\software\QT5\5.14.2\mingw73_64\bin\windeployqt.exe qt-test.exe

查看打包结果并运行exe程序

查看你刚刚存放的exe文件的目录,你会发现多个几个文件夹以及许多dll文件(库文件):

运行exe程序,报错:由于找不到libgcc_s_dw2-1.dll,无法继续执行代码。重新安装程序可能会解决此问题

 在网上找到解决方法

由于找不到libgcc_s_dw2-1.dll,无法继续执行代码。重新安装程序可能会解决此问题_霍志杰的博客-CSDN博客

原因是:自己上面展示的是MInGW-32,自己却想试一试MinGW-64下能不能成功,哈哈哈哈,如下图

 

解决问题的方法就是,构建程序我用的是MinGW-32,所用windeploy.exe也需要与MinGW32-对应的,更要用到MinGW 32的环境

 再次运行自己的exe程序

 弹出窗口!!

 

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

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

相关文章

手机充电宝电子充气泵方案

该充气泵产品方案的运行原理是通过电动机将电能转化为机械能&#xff0c;带动电机做往复运动&#xff0c;从而产生大量压缩空气&#xff0c;达到快速充气的效果。该充气泵可用于气垫床、汽车轮胎、自行车轮胎、足球、游泳圈等各类充气物品。产品设计以人性化为主&#xff0c;简…

VMware重新安装后没有VMnet1和VMnet8网络

问题&#xff1a; VMware重新安装后&#xff0c;没有自动生成VMnet1和VMnet8网络, 并且使用VMware自带的虚拟网络编辑器也无法生成。 导致主机无法ping通虚拟机。 如下图&#xff1a;点击该选项&#xff0c;然后应用&#xff0c;转一会圈也没有产生对应的网络适配器。 问题原…

物联网技术助力物流智能化:从货物追踪到配送优化

目录 前言 物流领域的IoT设备 物流领域的应用 二、仓库管理 三、物流配送 IoT组合应用 区块链在物流领域应用 展望 前言 随着全球贸易和物流业的快速发展&#xff0c;物流领域的智能化和自动化已成为不可避免的趋势。而物联网技术作为一种重要的数字技术&#xff0c;已经在物流…

VIsual Studio内引用Lua解释器,编译Lua源码,执行Lua脚本

前言 本篇在讲什么 在Visual Studio中引入lua的解释器 使用C调用Lua文件 本篇适合什么 适合初学Lua的小白 适合需要C/C和lua结合开发的人 本篇需要什么 对Lua语法有简单认知 对C/C语法有简单认知 依赖Lua5.1的环境 依赖VS 2017编辑器 本篇的特色 具有全流程的图文…

Shellcode分离加载实现免杀的两种方式(VT免杀率:1/68)

简介 本文详细介绍了如何通过文件加载和远程URL加载方式实现Shellcode分离加载&#xff0c;以规避安全软件的检测。文章首先描述了通过Metasploit Framework生成的shellcode文件加载的过程&#xff0c;并提供了相关的C代码。 为了避免被杀毒软件检测&#xff0c;利用动态API调…

自动化测试-DevOps如何实施?看看10年测试大佬的总结...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Selenium4自动化测…

2023最新!软件测试高频面试题基础知识点分享

近期也算是抽取出大部分休息的时间&#xff0c;为大家准备了一份通往大厂面试的小捷径&#xff0c;准备了一整套软件测试复习面试的刷题以及答案&#xff0c;我知道很多同学不知道怎么复习&#xff0c;不知道学习过程中哪些才是重点&#xff0c;其实&#xff0c;你们经历过的事…

内网渗透(八十二)之 CVE-2019-1040 NTLM MIC 绕过漏洞

CVE-2019-1040 NTLM MIC 绕过漏洞 漏洞背景 2019年6月11日,微软发布6月份安全补丁更新。在该安全补丁更新中,对 CVE-2019-1040 漏洞进行了修复。该漏洞存在于Windwos 大部分版本中,当中间人攻击者能够成功绕过NTLM 消息完整性校验(MIC)时,Windows 存在可能可篡改的漏洞…

R语言实践——rWCVP生成可发表级别的物种发现记录矩阵

rWCVP生成可发表级别的物种发现记录矩阵 介绍1. 查询一组示例数据2. 生成和格式化出现矩阵3. 额外地对国家进行处理 介绍 世界维管植物名录&#xff08;WCVP&#xff09;提供了已知的>340&#xff0c;000种维管植物物种的分布数据。该分布数据可用于构建植物物种名录的发现…

解密报错-java.security.InvalidKeyException: Illegal key size(本机解密正常,服务器解密报错)

记录在对接微信接口时需要的问题&#xff0c;对微信消息进行解密时报错&#xff0c;在本地进行解密是正常的&#xff0c;但部署到服务器进行解密就会报错 报错信息 java.security.InvalidKeyException: Illegal key sizeat javax.crypto.Cipher.checkCryptoPerm(Cipher.java:…

windows 系统扩容C盘注意事项

windows系统大家都不陌生&#xff0c;是大家用的最多的操作系统。在实际的使用中&#xff0c;遇到需要扩容C盘的情况不是很多&#xff0c;但是如果遇到了&#xff0c;有以下几个事项需要大家注意&#xff1a; 剩余空间是否充足 不论当前服务器是物理服务器还是虚拟机&#xff…

Slack工作区SolidUI 集成Claude使用流程,替代GPT3.5

背景 Claude 由 OpenAI 副总裁离职创立的和chatGPT对位的AI机器人&#xff0c;号称是chatGPT一生的对手&#xff01; 比之前的一些模型如GPT-3 要强大得多&#xff0c;因此Claude 被认为是ChatGPT 最有力的竞争对手。Claude 的研发公司是专注人工智能安全和研究的初创公司Anth…

谷歌Bard_VS_Baize-7B_VS_文心一言体验对比

2023年4月4日&#xff0c;来自加州大学圣迭戈分校、中山大学和微软亚研的研究者提出了Baize&#xff0c;该模型是让ChatGPT 自我对话&#xff0c;批量生成高质量多轮对话数据集&#xff0c;利用该数据集对LLaMA进行微调得到的&#xff08;目前版本还没有RLHF&#xff09; 关于B…

使用Dockerfile搭建rtthread 瑞萨开发环境

文章目录 1. 装docker2. 拉代码3. 构建镜像4. 启动容器5. vscode打开并编译6. 程序下载 整体分为6步 安装docker拉取rtthread_瑞萨仓库代码使用仓库中的dockerfile构建一个镜像使用构建好的镜像启动一个容器使用vscode打开并编译代码下载程序 1. 装docker Docker的安装方式可…

vue自动更新版本号

在项目中创建buildTime.js //npm run build打包前执行此段代码 let fs require(fs); //返回package的json数据 function getPackageJson() { let data fs.readFileSync(./package.json);//fs读取文件 return JSON.parse(data);//转换为json对象 } let packageData getPackag…

FreeRTOS_中断配置和临界段

目录 1. Cortex-M 中断 1.1 中断简介 1.2 中断管理简介 1.3 优先级分组定义 1.4 优先级设置 1.5 用于中断屏蔽的特殊寄存器 1.5.1 PRIMASK 和 FAULTMASK 寄存器 1.5.2 BASEPRI 寄存器 2. FreeRTOS 中断配置宏 2.1 configPRIO_BITS 2.2 configLIBRARY_LOWEST_INTERRU…

IOC(控制反转)

目录 理解IOC 理解IOC容器 Spring IOC IOC优点 什么是依赖注入DI DI是如何实现的呢&#xff1f; 总结 : IOC实现的基本过程 容器如何放入Bean对象? IOC实现的基本过程 IoC容器在Spring的实现 理解IOC IoC 是 Inversion of Control 的简写&#xff0c;译为“控制反…

容器部署 redis 哨兵集群 【问题笔记】

目录 1.哨兵模式 &#xff08;sentinel&#xff09; 启动时报错&#xff1a;Cant resolve instance hostnames 2.哨兵模式下 master 节点崩掉后无法切换从节点为master节点 1.哨兵模式 &#xff08;sentinel&#xff09; 启动时报错&#xff1a;Cant resolve instance hostna…

Axure教程—单色折线图(中继器)

本文将教大家如何用AXURE中的中继器制作单色折线图 一、效果介绍 如图&#xff1a; 预览地址&#xff1a;https://d84rfm.axshare.com 下载地址&#xff1a;https://download.csdn.net/download/weixin_43516258/87814278 二、功能介绍 简单填写中继器内容即可动态显示值样…

Call for Papers丨第十一届全国社会媒体处理大会,AI Open设独立专刊投稿渠道

全国社会媒体处理大会&#xff08;SMP&#xff09;专注于以社会媒体处理为主题的科学研究&#xff0c;为传播社会媒体处理最新的学术研究与技术成果提供广泛的交流平台&#xff0c;旨在构建社会媒体处理领域的产学研生态圈&#xff0c;成为中国乃至世界社会媒体处理的风向标。 …