将程序打包成单一一个可执行文件

最近做了一个界面交互渲染的小项目,项目主要的功能是通过TCP接收数据然后在界面中渲染出对应的状态。由于用户的最大需求是炫酷,于是为了方便实现特殊的交互逻辑,我选择用freeglut自行实现了界面的交互和渲染,又用OpenCV做了部分图像的绘制以及几个弹出窗体的实现。

项目完工后打包出来发现,一个这么简单的程序除了exe可执行程序外,居然需要附带9个其他文件,总的大小也到达了57.6M。有点蛋疼,于是研究了一下怎么将其全部打包成一个exe文件。

没做任何操作的文件列表如下:

请添加图片描述

干掉dll文件

从文件列表可以看到,里面体积最大的是OpenCV的动态链接库文件。要干掉它非常简单,如果用的是OpenCV4或者老一点的OpenCV3,可以自行从官网下载源码然后编译静态链接库,这样就OK。不过这个操作有个非常蛋疼的点,是需要从源码开始编译。

更简单的方法则是用OpenCV2,因为它有官方编译好的静态链接库,具体的操作可以看我之前写的这篇教程。相应的缺点则是不能用到OpenCV3或者4的特定功能。由于本人只用OpenCV来做一些简单的绘图,于是选择了简单的方法。这样操作下来程序的总体积只剩下不到5M。

另外一个freeglut的动态链接库也同样可以通过编译其源码生成静态链接库的版本来回避掉,这里不再赘述。

干掉图像素材文件

本人用OpenCV加载图像素材做一些绘图渲染,一开始通过相对路径加载,于是出现了大量图片素材文件需要打包的问题。为了解决这个问题,可以通过导入图片素材到工程中的方法进行处理。

大概的流程是→添加图像资源(这样程序编译的时候就会将图像打包进exe)→在程序中通过ID索引到这个资源→读取该资源的内存块→使用OpenCV解码该内存块获得图像。具体的代码实现可以看本人写的这篇教程。

完成了上面两步操作,就得到了一个单一的exe可执行文件啦!

最终打包结果如下:

请添加图片描述

可以看到清爽了巨多。

当然,对于更复杂的程序,要将其相关文件全部封在一个exe中肯定会更加复杂,需要更多的操作,本人后面如果有做相应的研究会继续在这篇博客中更新。

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

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

相关文章

图数据库Neo4j学习四——Spring Data NEO

1配置 1.1Maven依赖 <!--neo4j --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-neo4j</artifactId> </dependency>1.2yml配置 spring:data:neo4j:uri: bolt://localhost:76…

QT--day4(定时器事件、鼠标事件、键盘事件、绘制事件、实现画板、QT实现TCP服务器)

QT实现tcpf服务器代码&#xff1a;&#xff08;源文件&#xff09; #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//给服务器指针实例化空间server new QTc…

excel中使地址按十六进制进行数值递增的函数

这里是尼德兰的喵工具相关文章&#xff0c;欢迎您的访问&#xff01; 如果文章对您有所帮助&#xff0c;期待您的点赞收藏&#xff01; 让我们一起为成为芯片前端全栈工程师而努力&#xff01; 在进行寄存器编写时很多时候会涉及到算地址的问题&#xff0c;通常32bit位宽的寄存…

棕榈酰三肽-38——对额间纹,鱼尾纹,抬头纹和颈纹非常有效

简介 棕榈酰三肽-38由三个氨基酸组成&#xff0c;是一种双氧化的脂肽。这种肽的灵感源自于天然存在于胶原蛋白VI和层粘连蛋白中的一种三肽。 它可以在需要的地方&#xff0c;从内部重建肌肤&#xff0c;使皱纹平滑皮肤得到舒缓&#xff0c;尤其对额间纹&#xff0c;鱼尾纹&…

Spring整合Mybatis、Spring整合JUnit

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaweb 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 Spring整合 一、Spring整合Mybatis1.1 整合Mybatis&#x…

记录一次通过iostat命令定位系统数据库CPU飙升的案例

一、背景 我们有个移动考勤的系统&#xff0c;运维监控系统显示&#xff0c;每到上下班时间&#xff0c;考勤数据库的CPU就飙升到100%&#xff0c;磁盘读写请求等待时间变长&#xff0c;最初无法确定是磁盘性能下降导致的CPU飙升&#xff0c;还是CPU飙升导致的磁盘性能下降&…

C# 外观模式

概述 外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它提供了一个统一的接口&#xff0c;用于访问子系统中的一组接口。外观模式隐藏了子系统的复杂性&#xff0c;使得客户端可以通过简单的接口与子系统进行交互。 外观模式定义了一个高层…

设计模式之观察者模式

定义&#xff1a;对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发货所能改变时&#xff0c;所有依赖它的对象都得到通知并被自动更新。 例子&#xff1a;报纸-邮局-用户 不用设计模式实现 被观察者 package com.tao.YanMoDesignPattern.observer.case3_Origin;…

Docker快速入门笔记

Docker快速入门 前言 当今软件开发领域的一股热潮正在迅速兴起&#xff0c;它融合了便捷性、灵活性和可移植性&#xff0c;让开发者们欣喜若狂。它就是 Docker&#xff01;无论你是一个初学者&#xff0c;还是一位经验丰富的开发者&#xff0c;都不能错过这个引领技术浪潮的工…

windwos server 2008 更新环境,且vs_redis 安装失败

KB2919442 下载地址:https://www.microsoft.com/zh-cn/download/confirmation.aspx?id42153 KB2919355 下载地址:https://www.microsoft.com/zh-cn/download/confirmation.aspx?id42153 安装步骤:先安装442,后安装355

C语言打印水仙花数

“水仙花数”是指一个n位数&#xff0c;其各位数字的n次方之和确好等于该数本身&#xff0c;如:153&#xff1d;13&#xff0b;53&#xff0b;3^3&#xff0c;则153是一个“水仙花数”。 思路&#xff0c;先把每个数的每位算出来&#xff0c;然后再判断他们的3次方相加是否这个…

HTML+CSS+JavaScript:随机抽奖案例

一、需求 在时代少年团的七个人中&#xff0c;随机抽取一个人获得一等奖&#xff0c;再抽取一个获二等奖&#xff0c;再抽取一个获三等奖。注意同一个人不能同时获得多个奖项 如下图所示 二、代码素材 以下是缺失JS部分的代码&#xff0c;感兴趣的小伙伴可以先自己试着写一写…

PyCharm安装使用2023年教程,PyCharm与现流行所有编辑器对比。

与PyCharm类似的功能和特性的集成开发环境&#xff08;IDE&#xff09;和代码编辑器有以下几种&#xff1a; Visual Studio Code&#xff08;VS Code&#xff09;&#xff1a;由Microsoft开发&#xff0c;VS Code是一个高度可定制和可扩展的代码编辑器。它支持多种编程语言&am…

【phaser微信抖音小游戏开发006】给文本增加点击事件

新建st006&#xff0c;为文本增加点击事件。 我们加了一个计数的count&#xff0c;点击一次增加一下&#xff0c;并显示到屏幕上去。 效果如下图&#xff1a; 其它的对象以此类推即可&#xff0c;先置inputEnable为true,然后再增加一个inputDown事件即可。

Halcon学习之一维测量实战之测量矩形(一)

一、采集图像 (1)测量充电器 测量充电器的引脚,然后每次旋转充电器,让测量矩形都跟着它转,这就是定位+测量, (2)测量钥匙 (3)测量瓶盖 我们后面还会涉及到拟合的问

无涯教程-jQuery - css( properties )方法函数

css(properties)方法将键/值对象设置为所有匹配元素的样式属性。 css( properties ) - 语法 selector.css( properties ) 上面的语法可以写成如下- selector.css( {key1:val1, key2:val2....keyN:valN}) 这是此方法使用的所有参数的描述- key:value - 设置为样式属…

SQL注入之sqlmap

SQL注入之sqlmap 6.1 SQL注入之sqlmap安装 sqlmap简介&#xff1a; sqlmap是一个自动化的SQL注入工具&#xff0c;其主要功能是扫描&#xff0c;发现并利用给定的URL的SQL注入漏洞&#xff0c;目前支持的数据库是MS-SQL,MYSQL,ORACLE和POSTGRESQL。SQLMAP采用四种独特的SQL注…

PHP8的变量-PHP8知识详解

昨天我们讲解了PHP8的常量&#xff0c;今天讲解PHP8的变量。常量有定义常量和预定义常量&#xff0c;变量呢&#xff1f;那就没有定义变量了&#xff0c;那叫给变量赋值&#xff0c;但是还是有预定义变量的。下面就给大家讲解什么是变量、变量赋值及使用及预定义变量。 一、什么…

第六次作业 密码学

发送者为Alice 接受者为Bob 首先对原始信息进行hash运算得到信息摘要&#xff0c;然后使用发送者Alice私钥进行签名&#xff08;签名的作用是验证该信息是Alice的&#xff09;&#xff0c;然后将原始信息数字签名Alice证书&#xff08;该Alice的证书是由CA组织进行办发的&…

【测试设计】性能测试工具选择:wrk?jmeter?locust?还是LR?

目录 前言 wrk 优点 缺点 jmeter 优点 缺点 locust 优点 缺点 总结 资料获取方法 前言 当你想做性能测试的时候&#xff0c;你会选择什么样的测试工具呢&#xff1f;是会选择wrk&#xff1f;jmeter&#xff1f;locust&#xff1f;还是loadrunner呢&#xff1f; 今…