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

文章目录

一、安装运行时环境

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

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

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

1.1 安装

查看是否安装

bash 复制代码
mcrinstaller

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

bash 复制代码
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 才能运行。

相关推荐
Zevalin爱灰灰16 分钟前
Matlab simulink建模与仿真 第十六章(用户定义函数库)
开发语言·matlab
机器学习之心17 分钟前
多维时序 | Matlab基于BO-LSSVM贝叶斯优化最小二乘支持向量机数据多变量时间序列预测
支持向量机·matlab·贝叶斯优化·多变量时间序列预测·最小二乘支持向量机·bo-lssvm
Evand J20 分钟前
摩尔-彭罗斯伪逆(pinv)
matlab
Zevalin爱灰灰22 分钟前
Matlab simulink建模与仿真 第十四章(信号输出库)
开发语言·matlab
汇匠源1 小时前
小程序服务零工市场
java·大数据·开发语言·小程序·团队开发·零工市场·零工市场小程序
王俊山IT1 小时前
C++学习笔记----7、使用类与对象获得高性能(二)---- 理解对象生命周期(7)
开发语言·c++·笔记·学习
luthane2 小时前
python 实现bailey borwein plouffe算法
开发语言·python·算法
大侠之运维2 小时前
在excel中使用python?
开发语言·python·excel
蓝色洛特2 小时前
【Matlab 肌电信号分析】
开发语言·matlab·信号处理·肌电信号