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

news/2024/11/25 20:41:38/

用一个简单的实例展示下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_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic: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.ppmy.cn/news/94635.html

相关文章

Qt, Text Edit 和 Plain Text Edit关于调整字体样式的问题

问题: 在编写小案例的过程中需要使用一个文本容器用于显示文本效果, 因为涉及文本字体的 加粗, 倾斜, 下划线, 以及颜色效果, 这里使用了 Text Edit 组件, 但是使用后发现容器中的文本无法实现同时设置 加粗 倾斜 下划线的情况, 且单独设置时只有 下划线 有效果, 加粗 倾斜 均无…

Systrace系列12 —— CPU Info 解读

本文主要是对 Systrace 中的 CPU 信息区域(Kernel)进行简单介绍,简单介绍了如何在 Systrace 中查看 Kernel 模块输出的 CPU 相关的信息,了解 CPU 频率、调度、锁频、锁核相关的信息。 CPU 区域图例 下面是高通骁龙 845 手机 Systrace 对应的 Kernel 中的 CPU Info 区域(底下…

【树上差分+LCA】篮球杯 砍树

省赛的题现在来补 感觉什么都不会&#xff0c;已经要没了 题意&#xff1a; 思路&#xff1a; 考虑一条边&#xff0c;两端有两棵子树 有这样的性质&#xff1a; 这条边两端的结点的经过次数M 因此每加一个点对&#xff0c;都对其路径1 s[u]M时&#xff0c;与该点连着的…

一文会用断码屏

断码屏的使用 1、断码屏显示文字原理 我理解应该是偏压原理达到显示效果的。 LCD驱动分为A型、B型&#xff0c;如果LCD偏压类型为C型&#xff0c;固定为 1/3 偏压。 由数据手册得知&#xff0c;以下&#xff1a; LCD 驱动器提供的 COM 和 SEG 输出数目&#xff0c;以及偏压…

【C++】命名空间

1. 由来 命名空间时怎么来的&#xff1f;它又是什么&#xff0c;让我们一起来看一下吧 首先了解&#xff1a;在同一个域中不能同时出现重名的变量或函数名等&#xff08;不同域中可以尽管是全局与局部域&#xff09; ok 我们来看 在工程项目里&#xff0c;一开始用 C语言 开…

linux系统安装rabbimtMq

如果需要面板访问开放端口 1、安装 Erlang 环境 因为 rabbitmq 是使用 Erlang 语言开发的&#xff0c;所以说 rabbitmq 是在 Erlang 环境上运行的。 yum -y install erlang 2、安装 rabbitmq 及依赖 yum -y install socat logrotate initscripts rabbitmq-server 现在已经可…

Unix/C/C++进阶--pthread 跨平台

pthread 跨平台 1 pthread 介绍1.1 简介1.2 数据类型1.3 函数1.4 Windows下&#xff0c;pthread库支持的一些主要函数 2 库文件2.1 libwinpthread-1.dll&#xff08;mingw&#xff09;2.2 pthreadVC2.dll&#xff08;微软&#xff1f;&#xff09; 3 调用 libwinpthread-1.dll参…

电子器件系列37:SD卡座(Push-Push和Push-Pull)

SD卡座是目前最通用的数据存储卡座、记忆卡座。在各种通讯数码产品、安防产品、带储存类产品等设备上都有所应用。有着性价比高、存储容量大、使用便捷、通用性以及安全性强等特点。自弹式SD卡座的卡槽底部会设有一个小直径、小线径的弹簧或一种切口式弹片。当装入SD卡时&#…