一种解决Qt5发布release文件引发的无法定位程序输入点错误的方法

目录

    • 本地环境
    • 问题描述
    • 分析
    • 解决方案

本地环境

本文将不会解释如何利用Qt5编译生成release类型的可执行文件以及如何利用windeployqt生成可执行的依赖库,请自行百度。

环境
操作系统Windows 10 专业版(22H2)
Qt版本Qt 5.15.2
Qt Creator版本5.0.2
编译器版本g++ (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 7.3.0
发布类型release
windeployqt 版本Qt Deploy Tool 5.12.12

问题描述

编写完程序后直接利用Qt Creator发布release版本的可执行文件(exe后缀),随后再执行如下命令获取与可执行文件相关的依赖库:

windeployqt [可执行文件]

发现确实生成一大堆*.dll,总目录大小高达900+MB:
在这里插入图片描述

双击*.exe文件,提示无法定位程序输入点_ZN10QArrayData10deallocateEPs_yy
在这里插入图片描述

分析

起初,以为是编译器版本不对的问题,仔细对比了我用windeployqt工具时进入的环境以及我在Qt creator软件编译的环境,发现并没有什么问题,但是网上采用同样的方式均能成功运行*.exe文件,百思不得其解。

后来我根据**关键词"Qt 无法定位程序输入点"**寻找解决方案,大部分是描述依赖库的问题,我随便拿了一个动态库libstdc++-6.dll比对了我手头其他MinGW的环境,发现其实生成的这个动态库确实是编译环境中的依赖库,并没有出错。

此外,我还以为是本机的问题,便尝试将该文件以及依赖库传输到另外一台电脑运行,发现依然是同样的问题,还注意到了这些文件居然高达900+MB,这我开始怀疑是不是发布的包选错了,我写的程序仅仅几个文件,后续还是没有发现有什么错误的点。

当我重新使用windeployqt生成时,瞧了一眼日志信息,嘿,居然是以debug executable模式生成依赖库的:
在这里插入图片描述
所以这肯定是会出现问题的,一个以Release方式生成的可执行文件,依赖库却按debug executable模式构建,必然出现这种找不到程序入口的问题。

解决方案

在使用windeployqt工具构建依赖库时,强制它使用release模式:

windeployqt [可执行文件] --release

这样就没有问题了,可以看到生成的这些依赖库以及可执行文件总大小才几十兆(未优化):

在这里插入图片描述

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

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

相关文章

好的软件测试人员简历是什么样子的?

简历是入职职场的一张名片,也是进入职场一块“敲门砖”。从某种角度说,简历也是一张专业人员的说明书。 软件测试人员作为IT行业具有技术含量的职业,一份优秀的简历包含的内容以及如何写好简历尤为重要。接下来从以下两方面来介绍这个话题&a…

Mysql数据库的基础知识和yum安装步骤

MySQL数据库介绍 什么是数据库DB? DB的全称是database,即数据库的意思。数据库实际上就是一个文件集合,是一个存储数据的仓库,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作&#xff1…

代码随想Day41 | 343. 整数拆分、96.不同的二叉搜索树

343. 整数拆分 这道题的贪心思路是尽可能地拆分成3,(结论),需要进行数学证明,详细代码如下: class Solution { public:int integerBreak(int n) {if(n2) return 1;if(n3) return 2;if(n4) return 4;int re…

【每日OJ—有效的括号(栈)】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 1、有效的括号题目: 1.1方法讲解: 1.2代码实现: 总结 前言 世上有两种耀眼的光芒,一种是正在升起的太阳&#…

AUTOSAR StbM模块的配置以及代码实现

AUTOSAR StbM模块的配置以及代码实现 1、AUTOSAR配置 2、StbM_Init 初始化各个变量。 3、StbM_MainFunction StbM_Rb_IsSyncTimeBase 同步的TimeBase的id范围是0-15 StbM_Rb_IsOffsetTimeBase offset的TimeBase的id范围是16-31 StbM_Rb_IsPureLocalTimeBase pure的Time…

<JavaEE> 文件IO -- File类和文件操作

目录 一、文件的概念 二、文件系统 三、文件类型 四、使用 File 类进行文件操作 4.1 File 类中的 pathSeparator 属性 4.2 File 类构造方法 4.3 File 类常用方法 一、文件的概念 什么是文件? 广义上的“文件”是指抽象化的操作系统中的硬件设备和软件资源&a…

TC118AH 单通道内置功率 MOS 全桥驱动器

一、 TC118AH 特点 : 1、单通道内置功率 MOS 全桥驱动 2、驱动前进、后退、停止及刹车功能 3、内置迟滞热效应过热保护功能 4、低导通电阻(0.5Ω/1000mA) 5、连续输出电流可达 1.8A,峰值 2.5A 6、 无需外W大滤波电容,只需小贴片电容 7…

大数据Doris(三十八):Aggregate 和 Uniq 模型中的 ROLLUP

文章目录 Aggregate 和 Uniq 模型中的 ROLLUP 一、获得每个用户的总消费

Python-Selenium-使用 pywinauto 实现 Input 上传文件

当前环境:Win10 Python3.7 pywinauto0.6.8,selenium3.14.1 示例代码 from pywinauto import Desktop import osapp Desktop() dialog app[打开] dialog[Edit].set_edit_text(os.getcwd() .\\example-01.jpg) dialog[Button].click() 其他方法&…

airpods 无法使用Windows电脑充电的解决方法

打开设置 -> 蓝牙与其他设备 -> 显示更多设备 往下翻,找到“更多设备与打印机设置”,打开设备界面: 打开" Airpods Case",找到“硬件”选项 -> 双击"符合HID标准的供应商定义设备" -> “驱动程序…

【源码解析】Semaphore角度聊聊AQS

案例 Semaphore,俗称信号量,它是操作系统中PV操作的原语在java的实现,它也是基于 AbstractQueuedSynchronizer实现的 private static ExecutorService threadPool Executors.newFixedThreadPool(4);private static Semaphore semaphore ne…

MySQL数据库,触发器、窗口函数、公用表表达式

触发器 触发器是由事件来触发某个操作(也包含INSERT、UPDATE、DELECT事件),如果定义了触发程序,当数据库执行这些语句时,就相当于事件发生了,就会自动激发触发器执行相应的操作。 当对数据表中的数据执行…

进制之间的转换——n进制转换为m进制(C/C++实现,简单易懂)

目录 🌈前言: 📁 什么是进制转换: 📁其他进制转换成十进制: 📂二进制( B ) ——> 十进制( D ) 📂八进制( O ) ——> 十进制( D ) 📂十六进制( H ) ——> 十进制…

visual stdio code运行vue3

npm init vuelatest 该命令初始化vue项目 使用visual stdio code创建vue项目 ,这边是vue-project文件夹 vs code打开项目 vscode操作vue项目 vscode操作vue项目

数据分析思维导图

参考: https://zhuanlan.zhihu.com/p/567761684?utm_id0 1、数据分析步骤地图 2、数据分析基础知识地图 3、数据分析技术知识地图 4、数据分析业务流程 5、数据分析师能力体系 6、数据分析思路体系 7、电商数据分析核心主题 8、数据科学技能书知识地图 9、数据挖掘…

设计模式 简单工厂 工厂方法模式 抽象工厂模式 Spring 工厂 BeanFactory 解析

工厂模式介绍 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。它是创建型模式。 简单工厂 简单工厂模式是指由一个工厂对象决定创建出哪一种产品类的实例, 但它不属于GOF 23种设计模式 简单工厂适用于工厂类负责创建的对象较少的场景,…

Spring IOC—基于注解配置和管理Bean 万字详解(通俗易懂)

目录 一、前言 二、基于注解配置Bean 1.基本介绍 : 2.应用实例 : 3.注意事项 : 三、手动实现Spring 注解配置机制 1.需求 : 2.思路 : 3.实现 : 3.1 自定义注解类 3.2 自定义配置类 3.3 自定义容器类 3.4 在测试类中进行测试 四、自动装配 0.总述 : 1.AutoWired自动装…

Autosar DEM DTC的Debounce策略

文章目录 简介Debounce策略1、基于计数器的 Debounce 策略2、基于时间的Debounce策略 简介 故障事件防抖,与按键防抖(软件需要延时确认按键不是误触发)的作用类似,目的是为了防止事件误触发采取的策略。 因为DTC并不是一达到触发…

Transformer Decoder的输入

大部分引用参考了既安的https://www.zhihu.com/question/337886108/answer/893002189这篇文章,个人认为写的很清晰,此外补充了一些自己的笔记。 弄清楚Decoder的输入输出,关键在于图示三个箭头的位置: 以翻译为例: 输…

2023.12.16 关于 分布式系统 基本介绍

目录 单机架构 服务器负载过高问题 解决方法 分布式系统 引入更多的服务器节点 负载均衡 数据库读写分离 引入缓存 数据库分库分表 引入微服务 基本概念 应用(Application)/ 系统(System) 模块(Modul…