Qt打包成为exe遇到的问题及其解决方法

Qt打包成为exe遇到的问题及其解决方法

文章目录

  • Qt打包成为exe遇到的问题及其解决方法
    • 0. 前言
    • 1. 使用Release编译工程
    • 2. 利用windeployqt工具来找出和复制依赖项
    • 3. 解决 Qt Location /Qt Positioning is not installed
    • 4. 利用Enigma virtual box打包 `.exe`程序
    • 5. dependency walker工具等
    • 6. 小结

0. 前言

问题描述:在执行Qt打包的过程中,我使用了Enigma virtual box工具来封包,以使得程序所需要的动态链接库能够被包含。但无论在执行封包前后,.exe文件都无法启动,在双击过之后,没有任何反应,只会在任务管理器中存在,但看不到任何窗口。

本文旨在记录解决上述问题的方法和流程,作者纯属小白,文章中难免出现错误和不成熟的见解,还望海涵。

本文方案可能并不适用于所有人,请在参考时谨慎操作。

1. 使用Release编译工程

  1. 选择正确的构建套件和Release,我这里的选择如下,因为我有一个插件在MVSC2019,所以我只能选择Qt5.15下的MSVC2019.

  1. 编译成功后,项目文件夹中会出现一个关于Release的文件夹

  1. 点开该文件夹,找到 Release 下的 .exe文件,将其复制出来放到一个新建文件夹之后,以备后续之用。

2. 利用windeployqt工具来找出和复制依赖项

该部分参考了:qt windeployqt 打包发布程序,点击可执行文件没有反应的问题

windeployqt 是 Qt 提供的一个实用工具,用于将 Qt 应用程序所需的所有依赖库和资源文件自动复制到可执行文件所在目录,以便将应用程序打包为一个独立的可执行文件。

当你使用 Qt 编写跨平台的应用程序时,通常需要将应用程序部署到不同的操作系统上,以便用户可以在没有安装 Qt 运行时的计算机上运行应用程序。这时,windeployqt 工具就能帮助你自动收集应用程序所需的依赖项,并将它们复制到一个目录中,以确保应用程序可以独立地运行。

在该部分操作过程中,由于我需要qml以及一个外部插件,因此也才导致了我之前封包后执行exe文件没有任何反应,在这里我只叙述正确的操作,而如果你不需要qml,可能以下操作中有些对你来说不是必须的。

  1. 打开对应构建套件的命令行窗口

  1. 打开刚刚所新建文件夹(我重命名为了“outexe”),并通过cd命令到该目录下

  1. 按照以下命令执行

    windeployqt 项目名称.exe --qmldir D:\software\Qt\5.15.2\msvc2019_64\qml --no-patchqt
    //windeployqt 为上面所述的工具
    //项目名称.exe即为自己项目的可执行程序
    //--qmldir D:\software\Qt\5.15.2\msvc2019_64\qml 我使用了qml所以要加上(目录为套件目录)
    //--no-patchqt, windployqt的可选项(也正是因为这个导致了运行无反应)
    

执行改行命令后,可以发现文件夹中多出了好多文件,这个时候双击 .exe文件,发现不是完全没有反应了。出现以下的提示:

说明现在只是这几个模块找不到,而不是之前的问题。

3. 解决 Qt Location /Qt Positioning is not installed

该部分参考了:打包Qt Location/Qt Positioning程序的正确姿势

  1. 首先复制对应套件下的Qt5Location.dll到刚刚新建文件夹(我的是“outexe”)的目录之下:

  1. 重新执行命令:
windeployqt 刚刚文件夹的目录\outexe\Qt5Location.dll -geoservices --qmldir D:\software\Qt\5.15.2\msvc2019_64\qml --no-patchqt

可以发现这个只不过是比之前多了刚刚文件夹的目录\outexe\Qt5Location.dll -geoservices ,就是为了解决对应的模块未安装问题的。

  1. 生成完之后将对应套件下的复制qml\QtLocation和qml\QtPositioning到outexe程序目录下为QtLocation文件夹和QtPositioning文件夹就可以了

  1. 此时点击 .exe文件,发现程序能够运行了。

4. 利用Enigma virtual box打包 .exe程序

该部分参考了:QT 软件打包为一个单独可执行.exe文件流程_qt打包成可执行程序-CSDN博客

上面exe文件虽然可以运行,但是需要和动态链接库在一个文件夹中,十分的不方便,因此可以通过封包来将这些打包到一个exe文件中。

封包的过程网上就有很多了。

  1. 首先从官网下载Enigma virtual box :https://enigmaprotector.com/en/downloads.html

  2. 安装后,直接打开,点击浏览,选中刚才的 .exe文件

  3. 增加文件夹递归,所选的文件夹就是刚刚我们一直使用的(我的是outexe)

  1. 点击右下角“文件选项”,点击压缩文件

  2. 执行封包,等待完成

此时生成的可执行文件就可以直接运行而不需要和一大堆动态链接库在一个文件夹中。

5. dependency walker工具等

dependency walker类似的工具有很多,可以帮助我们查找exe可执行文件的依赖项,并构建所有依赖模块的分层树图。但对本问题的解决没有帮助,因此只是简单记录一下。

6. 小结

本文主要讲述了Qt在导出为一个exe可执行程序时遇到的后台运行,但前台无反应的问题,并给出了解决办法。

本文参考了以下博客:

QT 软件打包为一个单独可执行.exe文件流程_qt打包成可执行程序-CSDN博客

qt windeployqt 打包发布程序,点击可执行文件没有反应的问题

打包Qt Location/Qt Positioning程序的正确姿势

dependency walker工具简介及使用-CSDN博客

QT发布打包后无法运行的问题

如果您觉得我写的不错,麻烦给我一个免费的赞!如果内容中有错误,也欢迎向我反馈。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

sfml使用opengl着色器实现2d水面波浪

SFML中使用GLSL着色器来绘制水波。 效果 代码 #include <SFML/Graphics.hpp> #include <iostream>int main() {const int WIDTH = 800;

Mysql 编译安装部署

Mysql 编译安装部署 环境&#xff1a; 172.20.26.198&#xff08;Centos7.6&#xff09; 源码安装Mysql-5.7 大概步骤如下&#xff1a; 1、上传mysql-5.7.28.tar.gz 、boost_1_59_0.tar 到/usr/src 目录下 2、安装依赖 3、cmake 4、make && make install 5、…

springboot配置项动态刷新

文章目录 一&#xff0c;序言二&#xff0c;准备工作1. pom.xml引入组件2. 配置文件示例 三&#xff0c;自定义配置项动态刷新编码实现1. 定义自定义配置项对象2. 添加注解实现启动时自动注入3. 实现yml文件监听以及文件变化处理 四&#xff0c;yaml文件转换为java对象1. 无法使…

[陇剑杯 2021]webshell

[陇剑杯 2021]webshell 题目做法及思路解析&#xff08;个人分享&#xff09; 问一&#xff1a;单位网站被黑客挂马&#xff0c;请您从流量中分析出webshell&#xff0c;进行回答&#xff1a; 黑客登录系统使用的密码是_____________。 题目思路&#xff1a; 分析题目&…

《Aspect-Sentiment-Multiple-Opinion Triplet Extraction》论文阅读

文章目录 文章介绍文章模型encoder部分ATE任务TOWE任务ATSA任务 番外 文章地址&#xff1a; https://arxiv.org/abs/2110.07303v1 文章介绍 目前的关于ASTE三元组提取的方面级情感分析论文大多关注于简单的句式&#xff0c;比如一个方面实体仅有一个意见词加以修饰&#xff0c…

【计算机网络】TCP握手与挥手:三步奏和四步曲

这里写目录标题 前言三次握手四次挥手三次握手和四次挥手的作用TCP三次握手的作用建立连接防止已失效的连接请求建立连接防止重复连接 TCP四次挥手的作用&#xff1a;安全关闭连接避免数据丢失避免半开连接 总结&#xff1a; 总结 前言 TCP&#xff08;传输控制协议&#xff09…

新 Java 与旧 Java 不同的 11 个原因

Java 已经很古老了吗&#xff1f;那些喋喋不休地谈论闪烁着灯光的前面板和软盘时代的老人们所使用的编程语言&#xff1f;或者它仍然很时尚&#xff0c;拥有所有最新的语言增强功能&#xff0c;可实现直观的编码和一流的性能&#xff1f;也许 Java 介于两者之间&#xff1a;一种…

二维码巡检系统开发及部署

** 凡尔码二维码巡检系统**是一种低代码平台&#xff1b;用户可通过平台开发好的组件像搭积木一般灵活搭建巡检管理平台和无纸化记录应用场景。 ** 凡尔码平台功能**组件&#xff1a;二维码管理、表单管理、流程管理、计划管理、权限管理、隐患管理、区域管理、记录管理、任务…

vue3+vite:封装Svg组件

前言 在项目开发过程中&#xff0c;以svg图片引入时&#xff0c;会遇到当hover态时图片颜色修改的场景&#xff0c;我们可能需要去引入另一张不同颜色的svg图片&#xff0c;或者用css方式修改&#xff0c;为了方便这种情况&#xff0c;需要封装svg组件来自定义宽高和颜色&…

(3)【Python数据分析进阶】Machine-Learning模型与算法应用-线性回归与逻辑回归

目录 一、Linear Regression线性回归应用 应用案例&#xff08;一&#xff09;——自定义数据&#xff08;Custom data&#xff09; 1、下载安装sklearn库 2、导入库函数 3、加载数据集 4、创建线性回归对象 5、模型训练 6、预测结果 7、绘制模型图像 8、应用模型进行…

Python小项目:还在为备份烦恼?这个tkinter项目帮你解决!

文章目录 1 引言2 Tkinter概览3 设计备份软件的界面4 文件夹选择逻辑5 备份方案介绍5.1 完全备份5.2 增量备份5.3 镜像备份 完整代码&#xff1a; import tkinter as tk from tkinter import filedialog, messagebox import os import shutil import filecmpdef choose_source(…

【K8S 云原生】K8S的对外服务—ingress

目录 一、K8S的Service 1、Service的作用 2、Service类型&#xff1a; 二、ingress 1、ingress的组成&#xff1a; 2、ingress资源的定义项&#xff1a; 三、nginx-ingress-controller暴露服务端的方式 1、DeploymentLoadBalancer模式&#xff1a; 1、工作流程图&…

vector讲解

在学习玩string后我们开始学习vector&#xff0c;本篇博客将对vector进行简单的介绍&#xff0c;还会对vector一些常用的函数进行讲解 vector的介绍 实际上vector就是一个数组的数据结构&#xff0c;但是vector是由C编写而成的&#xff0c;他和数组也有本质上的区别&#xff…

pandas操作excel

目录 一&#xff1a;创建excel 二&#xff1a;修改excel 三&#xff1a;查找excel 四&#xff1a;删除数据 五&#xff1a;合并excel数据 一&#xff1a;创建excel import pandas as pd # 创建DataFrame对象 data { Name: [Alice, Bob, Charlie], Age: [25, 30, 35], S…

ISA Server 2006部署网站对比nginx

2024年了&#xff0c;我还是第1次使用ISA Server 。没办法在维护一个非常古老的项目。说到ISA Server可能有小伙们不清楚&#xff0c;但是说到nginx大家应该都知道吧。虽然他们俩定位并不相同&#xff0c;但是本文中提到的需求&#xff0c;他俩是都可以实现。 网上找的到的教程…

力扣:(692. 前K个高频单词)

题目1&#xff1a; 题目链接 思路1&#xff1a;首先可以使用map来统计单词出现的次数。然后使用vector将pair存起来&#xff0c;接着使用stable_sort排序(要保证数据具有稳定性)&#xff0c;然后返回前k个单词即可。 难点&#xff1a;需要写一个比较函数&#xff08;仿函数&am…

SAP S/4HANA 2023 Fully-Activated Appliance 虚拟机版介绍

注&#xff1a;市面上所有在售虚拟机均为拷贝本人所作的虚拟机&#xff0c;存在各种技术问题&#xff0c;请知悉。 SAP S4HANA 2023 FAA版本内置了四个Client&#xff1a; 1、000&#xff1a;SAP初始Client&#xff0c;原则上不能动&#xff1b; 2、100&#xff1a;只激活了US…

java SSM网上小卖部管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM网上小卖部管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源 代码和数据库&#xff0c;系统主要…

【Docker篇】详细讲解容器相关命令

&#x1f38a;专栏【Docker】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f6f8;容器&#x1f339;相关命令&#x1f354;案例⭐创建并运…

WorkPlus Meet私有化视频会议软件-构建安全高效的内网会议体验

在企业内部&#xff0c;高效的会议协作是推动团队协同和工作效率的关键。而内网会议系统成为了构建安全高效的内部会议体验的必要工具。作为一家领先的内网会议系统&#xff0c;WorkPlus Meet以其卓越的性能和智能化的功能&#xff0c;助力企业实现高效安全的内部会议体验。 为…