【matlab】将程序打包为exe文件(matlab r2023a为例)

文章目录

  • 一、安装运行时环境
    • 1.1 安装
    • 1.2 简介
  • 二、打包
  • 三、打包文件为什么很大

一、安装运行时环境

使用 Application Compiler 来将程序打包为exe,相当于你使用C编译器把C语言编译成可执行程序。

在matlab菜单栏–App下面可以看到Application Compiler

在这里插入图片描述

或者在App 设计工具里面也可以看到。

在这里插入图片描述

1.1 安装

查看是否安装

mcrinstaller

在这里插入图片描述

没有安装则按照提示安装即可,大小大概4G左右。

compiler.runtime.download

完成:
在这里插入图片描述

1.2 简介

MATLAB Compiler 工具箱是 MATLAB 提供的一种工具,用于将 MATLAB 程序、函数、数据和应用程序打包为独立的可执行文件、共享库、Web 应用程序或软件组件,方便分发和部署给不具备 MATLAB 环境的用户。

使用 MATLAB Compiler 工具箱生成的可执行文件不需要 MATLAB 本身,但需要一个免费的 MATLAB Runtime(运行时环境)。

主要功能:

  1. 生成独立的可执行文件:将 MATLAB 程序打包为 .exe 文件,用户无需安装 MATLAB,只需安装 MATLAB Runtime。

  2. 生成共享库:可以将 MATLAB 程序转换为 C/C++ 共享库(.dll.so),用于集成到其他编程环境中。

  3. 生成 .NET 组件:将 MATLAB 程序打包为 .NET 组件,便于在 .NET 环境(如 C# 或 VB.NET)中使用。

  4. 生成 Java 类:可以将 MATLAB 程序封装为 Java 类,并在 Java 应用程序中调用。

  5. Web 应用和企业部署:将 MATLAB 应用程序打包为 Web 应用程序,并与 MATLAB Production Server 结合,用于企业级部署。

  6. MATLAB Runtime:所有由 MATLAB Compiler 生成的应用程序都使用 MATLAB Runtime。这个运行时环境可以免费分发,允许在不安装 MATLAB 的机器上运行 MATLAB 应用程序。

常见用途:

  • 应用程序打包:开发的 MATLAB 应用程序可以打包为独立的应用程序,方便分发给不使用 MATLAB 的用户。
  • 企业部署:将算法转换为企业可以使用的形式,通过共享库或 .NET 组件在服务器端或客户端环境中使用。
  • 代码保护:通过编译器可以保护 MATLAB 源代码不被直接访问或修改。

限制:

  • MATLAB Compiler 并不能加速程序运行,它主要用于分发和部署。
  • 打包的程序在运行时依赖于 MATLAB Runtime。

二、打包

打开MATLAB Compiler,选择要打包的程序,会自动添加所需函数、数据等,也可手动添加。
在这里插入图片描述

有2个选项:

  • Runtime downloaded from web;
  • Runtime included in package。

第一个是用户需要自己下载Runtime,用户运行打包后的exe,会先下载运行环境,然后才能使用。打包后的exe很小,几MB到几十MB左右。

第二个是把运行环境也打包进来。打包后的程序很大,1G左右。

打包输出目录:

在这里插入图片描述

第三个目录是你自己测试用的,你打包的电脑上是有Runtime的,它用的就是那个。

第一个目录是打包后用于发布的正式版。

第二个目录类似,但是App和测试的一样的,不包含运行环境,或者不包含下载运行环境的部分。这个可以用于程序更新,比如之前用户已经安装过运行环境,现在你的程序更新了,用户就可以下载这个。


示例,在没有安装matlab的虚拟机运行打包后的exe。

(1)将运行环境打包进exe:

文件大小1.19GB

和平时安装软件一样的。
在这里插入图片描述

运行没问题:

在这里插入图片描述

(2) 不打包运行环境:

文件大小:9.02MB

这个就需要用户下载运行环境了。
在这里插入图片描述

会检查运行环境,没有的话就会下载,我这个在(1)里面已经安装过了。
在这里插入图片描述

三、打包文件为什么很大

MATLAB 是一种高级矩阵编程语言,背后有很多复杂的矩阵操作、算法优化和可视化功能。

这些功能并不是直接在可执行文件中生成的,而是依赖于 MATLAB 本身的运行时环境。

MATLAB Compiler 只将 MATLAB 程序编译成字节码(类似于 Java 的字节码),然后依赖 MATLAB Runtime 来解释和执行这些字节码。因此,打包的 .exe 需要 MATLAB Runtime 才能运行。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

智慧电网能源双碳实训平台

智慧产业实践基地提供能源双碳实训系统,系统集成了火力发电、风力发电、光伏发电、储能、变网、载荷、智能抄表等多种功能,将分布式发电机组、储能单元、逆变单元、可以远程控制的物联网负荷汇聚在一起,通过物联网、人工智能、嵌入式、大数据…

元素循环分析再添新成员:铜、钼、镍、钴、硒微量元素数据库注释

微量营养元素(例如Fe、Cu、Mo、Ni等)是光合作用、呼吸作用、生物大分子合成、氧化还原平衡、细胞生长和免疫系统功能等微生物驱动过程的重要调节因子。虽然生物体需要少量的微量营养元素,但缺乏微量营养元素会严重限制生物体的生长和生物过程…

新手教学系列——基于统一页面的管理后台设计(二)集成篇

在现代企业级应用中,后台管理系统不仅是业务运营的核心,还承担着数据管理、用户权限控制等重要功能。随着业务规模的不断扩大,系统架构逐渐向微服务转变,多个后端服务模块协同工作,如何高效地集成这些模块,确保系统的稳定性和可维护性,成为开发者亟需解决的问题。在《新…

TR CU 004/2011《低压设备安全技术法规》认证解读篇上

一、根据技术法规或国家标准进行的生产一致性认证为制造商和卖方提供了以下优势: 不需要为每个国家提供单独的文件; 大大减少了完成认证程序所需的时间; 加快国家间贸易周转,对其经济产生积极影响; 个别公司的销售额…

day-56 最长的字母序连续子字符串的长度

思路 双指针,用left和right表示以right为右边界的连续子字符串,left表示其左边界 解题过程 right从0到s.length()-1遍历:1.如果当前字符减去前一个字符的值为1,则当前字符与前面的字符是连续的,此时left不变,right;2.…

SpringBoot设置mysql的ssl连接

因工作需要,mysql连接需要开启ssl认证,本文主要讲述客户端如何配置ssl连接。 开发环境信息: SpringBoot: 2.0.5.RELEASE mysql-connector-java: 8.0.18 mysql version:8.0.18 一、检查服务端是否开启ssl认…

在 Windows 11/10/8/7 中恢复 Shift 删除的文件

在 Windows 中,临时删除文件就像按 Delete 键一样简单,永久删除文件就像按 Shift Delete 一样简单。但是,如果您想恢复这些丢失的文件,那又怎样?有没有办法恢复这些永久删除的文件? 幸运的是,…

【数据结构】排序算法---基数排序

文章目录 1. 定义2. 算法步骤2.1 MSD基数排序2.2 LSD基数排序 3. LSD 基数排序动图演示4. 性质5. 算法分析6. 代码实现C语言PythonJavaCGo 结语 ⚠本节要介绍的不是计数排序 1. 定义 基数排序(英语:Radix sort)是一种非比较型的排序算法&…

api接口详解大全

优秀的设计是产品变得卓越的原因。设计API意味着提供有效的接口,可以帮助API使用者更好地了解、使用和集成,同时帮助人们有效地维护它。每个产品都需要使用手册,API也不例外。在API领域,可以将设计视为服务器和客户端之间的协议进…

68个卫星电子地形大字体历史地图高清图源大全

数据是GIS的血液! 在GIS数据中一般主要有栅格地图、高程DEM数据和矢量地图等,这里我们为你分享68个栅格瓦片地图的图源。 你如果需要这些图源,请在文末查看领取方式。 68个图源大全 现在为你分享的68个图源,主要包括35个卫星电…

代码签名证书快速申请指南

申请代码签名证书是确保软件或应用程序在分发和安装过程中不被篡改的重要步骤。以下是详细的快速申请指南: 一、选择证书品牌和服务商 选择知名证书品牌:首先,选择一个国际知名的代码签名证书品牌,如GlobalSign、Digicert、Comod…

首席数据官(CDO)概览

首席数据官(CDO)担任着企业中一个至关重要的高级管理层角色,主要聚焦于对整个组织的数据资产进行全面监管与管理。 以下内容进一步详细阐述并深入解析了这一关键职位的核心职责和战略地位: 首席数据官的核心使命在于确保数据资产…

C++ | Leetcode C++题解之第416题分割等和子集

题目&#xff1a; 题解&#xff1a; class Solution { public:bool canPartition(vector<int>& nums) {int n nums.size();if (n < 2) {return false;}int sum 0, maxNum 0;for (auto& num : nums) {sum num;maxNum max(maxNum, num);}if (sum & 1)…

中小企业在 Kubernetes 托管服务中的最佳实践(一)

DigitalOcean 的使命非常简单——为你提供扩展和加速云开发所需的工具和基础设施。许多独立软件供应商&#xff08;ISV&#xff09;和初创公司&#xff0c;例如 Snipitz、ScraperAPI、Nitropack、Zing 和 BrightData&#xff0c;都在 DigitalOcean Kubernetes 平台&#xff08;…

在WPF中自定义控件时如何选择基类

在WPF中需要自定义控件&#xff0c;首要要选择需要继承的基类 FrameworkElement 这是常用的最低级的基类。通常&#xff0c;只有当希望重写OnRender()方法并使用DrawingContext从头绘制内容时&#xff0c;才会继承该类。 Control 当从头开始创建控件时&#xff0c;这是最常用…

Linux文件IO(四)-返回错误处理与errno详解

1.前言 在上一文章中&#xff0c;给大家编写了很多的示例代码&#xff0c;大家会发现这些示例代码会有一个共同的特点&#xff0c;那就是当判断函数执行失败后&#xff0c;会调用 return 退出程序&#xff0c;但是对于我们来说&#xff0c;我们并不知道为什么会出错&#xff0…

深度学习后门攻击分析与实现(一)

在计算机安全中&#xff0c;后门攻击是一种恶意软件攻击方式,攻击者通过在系统、应用程序或设备中植入未经授权的访问点,从而绕过正常的身份验证机制,获得对系统的隐蔽访问权限。这种"后门"允许攻击者在不被检测的情况下进入系统,执行各种恶意活动。 后门可以分为几种…

redis为什么不使用一致性hash

Redis节点间通信时&#xff0c;心跳包会携带节点的所有槽信息&#xff0c;它能以幂等方式来更新配置。如果采用 16384 个插槽&#xff0c;占空间 2KB (16384/8);如果采用 65536 个插槽&#xff0c;占空间 8KB (65536/8)。 今天我们聊个知识点为什么Redis使用哈希槽而不是一致性…

Acwing 并查集

并查集 并查集结构能够支持快速进行如下的操作&#xff1a; 将两个集合合并&#xff1b;询问两个元素是否在一个集合当中 并查集可以在近乎 O ( 1 ) O(1) O(1)的时间复杂度下吗&#xff0c;完成上述2个操作 基本原理 用树的形式来维护一个集合。用树的根节点来代表这个集合…

HTML/CSS/JS学习笔记 Day7(CSS--C4 CSS的三大特性)

跟着该视频学习&#xff0c;记录笔记&#xff1a;【黑马程序员pink老师前端入门教程&#xff0c;零基础必看的h5(html5)css3移动端前端视频教程】https://www.bilibili.com/video/BV14J4114768?p12&vd_source04ee94ad3f2168d7d5252c857a2bf358 Day6 内容梳理&#xff1a;…