一种解决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
这样就没有问题了,可以看到生成的这些依赖库以及可执行文件总大小才几十兆(未优化):

相关文章:
一种解决Qt5发布release文件引发的无法定位程序输入点错误的方法
目录 本地环境问题描述分析解决方案 本地环境 本文将不会解释如何利用Qt5编译生成release类型的可执行文件以及如何利用windeployqt生成可执行的依赖库,请自行百度。 环境值操作系统Windows 10 专业版(22H2)Qt版本Qt 5.15.2Qt Creator版本5.0…...
UE4/UE5 日志插件(基于spdlog)
1 解决问题 对于高频日志序列化到本地的需求,spdlog肯定完美满足。 源码地址:https://github.com/gabime/spdlog 博主下载的版本为 spdlog-1.12.0,各位大佬可以根绝自己爱好选择。 2 过程介绍 大概目录: SpdlogLibC目录下是对…...
微信小程序ios中非cover组件点击重复触发地图tap事件
现象: map中使用view组件的click事件会重复触发地图的tap组件,只在ios上出现 <map id"maps" style"width: 100vw;height: 100vh;" :latitude"latitude" :longitude"longitude":markers"markers"…...
7.26 SpringBoot项目实战【还书】
文章目录 前言一、编写控制器二、编写服务层三、Git提交前言 本文是项目实战 业务接口 的最后一篇,上文 曾说过【还书】的 入口是【我的借阅记录】,因为【还书】是基于一次借阅记录而言,另外在4.2 数据库设计 曾分析过【还书】的业务场景,需要执行两步操作: 更新【借阅记…...
Golang中使用errors返回调用堆栈信息
Golang的errors包返回堆栈信息 标准库errors提供了处理错误的方法。比如常用的 func New(text string) error 用该方法处理错误信息,就只会输出自定义的 text 到控制台或者日志文件,没有其它辅助排查的信息输出,所以常规我们就只能根据 te…...
Web前端-HTML(常用标签)
文章目录 1. HTML常用标签1.1 排版标签1)标题标签h (熟记)2)段落标签p ( 熟记)3)水平线标签hr(认识)4)换行标签br (熟记)5)div 和 span标签(重点)6)排版标签总结 1.2 标签属性1.3 图像标签img (重点)1.4 链…...
一 OpenCV中的数据类型
1. cv::Mat 2. cv::Point 主要用来表示二维点,也有表示三维点的模板类型; cv::Point p(int, int) 最常用 ① cv::Point_<T> ② cv::Point2i cv::Point_<int> ③ cv::Point2f cv::Point_<float> ④ cv::Point2d …...
59. 螺旋矩阵 II(java实现,史上最详细教程,想学会的进!!!)
今天来分享一下螺旋矩阵的解题思路及代码的实现。 题目描述如下: 首先拿到这道题,首先不要慌张,我们来仔细分析一下会发现并没有那么难。 首先看下边界的元素是1、2、3递增的,那么我们也许可以根据这一点先把边界的元素一个一个给…...
vue 将后端返回的二进制流进行处理并实现下载
什么是二进制流文件? 二进制文件是一种计算机文件格式,它的数据以二进制形式存储,与文本文件不同。二进制文件可以包含任意类型的数据,例如图像、音频、视频、可执行文件、压缩文件等,而文本文件则仅仅包含 ASCII 码或…...
PyCharm连接远程服务器
要求:PyCharm专业版才支持远程服务 一、创建远程连接 先建立本地与远程服务器之间的SSH连接 1、配置连接 2、建立SSH连接,选择文件传输协议 SFTP 3、设置服务器名(可以随意命名) 4、配置 SSH连接 点击 172.18.1.202 配置…...
使用Qt制作网易云播放器的歌曲排行界面
!!!直接上图!!! !!!直接上图!!! !!!直接上图!!! 网易云排行榜…...
【.NET Core】特性(Attribute)详解
【.NET Core】特性(Attribute)详解 文章目录 【.NET Core】特性(Attribute)详解一、概述二、编写自定义属性2.1 自定义特性的主要步骤2.2 应用AttributeUsageAttributeAttributeTargets 成员Inherited属性AllowMultiple属性 三、声…...
【C++】POCO学习总结(十九):哈希、URL、UUID、配置文件、日志配置、动态库加载
【C】郭老二博文之:C目录 1、哈希 1.1 说明 std::map和std::set 的性能是:O(log n) POCO哈希的性能比STL容器更好,大约快两; POCO中对应std::map的是:Poco::HashMap; POCO中对应std::set的是 Poco::Hash…...
1846_安全SPI
Grey 全部学习内容汇总:GitHub - GreyZhang/g_embedded: some embedded basic knowledge. 1846_安全SPI SPI是一种常见的通信方式,在汽车电子中比较常用。但是如果涉及到安全相关的设计,可能得考虑更多。而SPI协议本身没有很好的标准化&am…...
SQL Server ,使用递归查询具有层级关系的数据。
假设我们有一个表格 Employees,其中包含员工的层级关系信息,每一行包括员工的ID、姓名以及上级员工的ID。 下面是一个示例表格及其数据: Employees ---------------------- EmployeeID | Name | ManagerID ---------------------- 1 …...
【参数汇总】mysql服务端/客户端常见优化参数
mysql服务端参数 1、innodb_buffer_pool_size (innodb索引buffer pool缓冲区大小) 默认大小为128M, 官方推荐其配置为系统内存的 50% 到 75% 。 一般innodb_buffer_pool_size要结合以下两个参数来设置: innodb_buffer_pool_ch…...
LeetCode 142. 环形链表 II
给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整…...
Leetcode刷题笔记题解(C++):224. 基本计算器
思路: step 1:使用栈辅助处理优先级,默认符号为加号。 step 2:遍历字符串,遇到数字,则将连续的数字字符部分转化为int型数字。 step 3:遇到左括号,则将括号后的部分送入递归&#x…...
还在为学MyBatis发愁?史上最全,一篇文章带你学习MyBatis
文章目录 前言一、📖MyBatis简介1.Mybatis历史2.MyBatis特性3.对比(其他持久化层技术) 二、📣搭建MyBatis1.开发环境2.创建maven工程3.创建MyBatis核心配置文件4.创建mapper接口5.创建MyBatis的映射文件6.通过junit测试功能7.加入…...
C# WPF上位机开发(树形控件在地图软件中的应用)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们聊过图形软件的开发方法。实际上,对于绘制的图形,我们一般还会用树形控件管理一下。举个例子,一个地图…...
机器人抓取技能自动化:从仿真学习到现实迁移的实践指南
1. 项目概述与核心价值最近在机器人抓取领域,一个名为simpliolabs/manus-open-claw-skill-hunter-and-developer的项目引起了我的注意。乍一看这个标题,它像是一个开源工具或框架,核心围绕着“机械手开放爪具”的“技能猎人”与“开发者”。这…...
STM32 GPIO八种配置模式详解:从推挽输出到模拟输入实战指南
1. 项目概述:从“点灯”到“通信”,GPIO配置是嵌入式开发的基石如果你玩过STM32,哪怕只是点个灯,也一定和GPIO打过交道。但很多人对GPIO的理解,可能就停留在“输出高电平灯亮,输出低电平灯灭”的层面。实际…...
手把手教你用TTL线刷救活咪咕MGV3200盒子(GK6323V100C芯片/安卓9系统)
咪咕MGV3200盒子救砖全指南:从TTL焊接到底层刷机实战 当你的咪咕MGV3200电视盒子因为一次鲁莽的卡刷操作变成"砖头",指示灯不再亮起,屏幕一片漆黑时,那种绝望感只有经历过的人才能体会。不同于普通刷机教程,…...
如何自动化监控线上问题
要实现线上问题的自动化监控,不能仅停留在工具的堆砌,而需要从体系规划、数据采集、智能告警、动态诊断到流程规范进行全盘设计。以下是基于行业最佳实践的自动化监控构建指南:一、 体系规划与监控点梳理构建自动化监控的第一步是明确“监控什…...
基于rsync的嵌入式Ubuntu系统镜像定制与批量部署实战
1. 项目概述:为什么我们需要在开发板上“冻结”Ubuntu文件系统?在基于ARM架构的嵌入式开发中,尤其是使用像飞凌OK3399-C这样搭载RK3399处理器的开发板时,我们常常会面临一个看似简单却非常实际的痛点:环境部署的效率问…...
Cursor对话历史导出扩展:基于DOM逆向的AI协作数据备份方案
1. 项目概述:一个为开发者解放生产力的“数据保险箱”如果你和我一样,日常重度依赖 Cursor 这款 AI 编程神器,那你一定有过这样的焦虑:那些与 AI 深度对话产生的宝贵上下文、精心调教出的项目特定提示词、甚至是 AI 帮你重构的代码…...
MultiFunPlayer终极指南:5分钟掌握开源设备同步软件,打造沉浸式娱乐体验
MultiFunPlayer终极指南:5分钟掌握开源设备同步软件,打造沉浸式娱乐体验 【免费下载链接】MultiFunPlayer flexible application to synchronize various devices with media playback 项目地址: https://gitcode.com/gh_mirrors/mu/MultiFunPlayer …...
树莓派驱动MAX31855热电偶传感器:从SPI通信到高精度测温实践
1. 项目概述:从热电偶到Python读数在嵌入式开发、工业监控或者任何需要精确测温的项目里,热电偶(Thermocouple)往往是工程师们的首选传感器。它结构简单、皮实耐用,而且测温范围能从零下两百多度一直覆盖到上千度&…...
大语言模型实战:从Transformer到QLoRA微调与RAG应用
1. 项目概述:为什么我们需要一门关于大语言模型的课程?如果你在过去一年里关注过技术圈,那么“大语言模型”这个词一定已经听得耳朵起茧了。从ChatGPT的横空出世,到各类开源模型的百花齐放,再到企业级应用的遍地开花&a…...
对话式AI应用开发实战:基于Bolna框架的语音助手构建与优化指南
1. 项目概述:Bolna,一个面向对话式AI应用的开源编排框架如果你正在构建一个需要处理语音或文本对话的AI应用,比如一个智能客服、一个语音助手,或者一个能通过电话自动处理预约的机器人,你可能会立刻想到几个核心挑战&a…...
