当前位置: 首页 > article >正文

044_Standalone App in Matlab中发布独立应用

在这里插入图片描述

Matalb中应用部署

Matlab因为年头久远,所有的东西都积累了一大堆。就说是应用部署,Matlab 2023b至少有下面的几个技术线

  • Matlab Compiler技术线:产生独立App可执行程序或者网页应用
  • Simulink Compiler技术线:产生独立App可执行程序,或者FMU(Functional Mock-up Unit)
  • MATLAB Compiler SDK技术线:产生软件组件
  • MATLAB production Server技术线:产生Web服务、数据库和企业应用
  • MATLAB Web App Server技术线:产生Web应用,支持MATLAB和Simulink

这是大的技术线划分,实际上,MATLAB的应用可以部署为:

  • 独立运行的(桌面)应用
  • Web应用
  • Microsoft Excel插件
  • 大数据分析应用
  • 微服务
  • 企业应用和云服务
  • 打包成库,供其他语言调用(Java、.Net, Python,C/C++)

所以,别问什么事情在MATLAB中行不行,就问你想要什么。只要给够钱,牛马们都能干。

打钱热线:666-666-6666

简单的独立App例子

下面给出一个简单的命令行应用打包的例子,为了展示过程,我们先整一个最简单的TUI应用,然后打包成独立App。

这个应用的功能超级牛叉,应用可以接受0个或者1个字符串参数,输出你好世界,来自xxx。当提供参数时,这个xxx就是参数,否则就是默认值:MATLAB。

function hello(name)
arguments
    name (1,1) string = 'MATLAB'
end
fprintf('Hello, World from %s!\n', name);
end

这个程序可不要小看,是业界鼎鼎大名的Hello World程序,所有致力于修仙的小卡拉米首先都要把这个玩意整出来。跟别说,我们MATLAB仙人还提供了默认参数的选项,顿时把这个冒烟测试的例子提升到它不应该有的高度。

编译

首先,我们要把这个程序编译成可执行程序。请各位仙路上的同学们打开MATLAB,然后输入下面的命令:

help compiler.build.standaloneApplication

这个命令接受一个MATLAB函数文件的文件名作为参数,然后编译出可执行程序。当我们的函数文件是hello.m时,我们可以这样调用:

compiler.build.standaloneApplication('hello.m')

这个程序会在当前目录下申城一个hellostandaloneApplication的文件夹,里面包含了编译好的可执行程序:hello.exe(Windows)。

此外,这个目录里大概包含以下文件:

  • hello.exe:可执行程序hello.exe
  • includeSupportPackages:支持包列表,这里什么包都没有,字节0
  • readme.txt:说明文件
  • mccExcludedFiles.log:编译时排除的文件列表
  • requiredMCRProducts.txt:所需要的MATLAB Runtime产品
  • unresolvedSymbols.log:编译时未解决的符号列表
hello Executable

1. Prerequisites for Deployment 

Verify that MATLAB Runtime(R2023b) is installed.   
If not, you can run the MATLAB Runtime installer.
To find its location, enter
  
    >>mcrinstaller
      
at the MATLAB prompt.
NOTE: You will need administrator rights to run the MATLAB Runtime installer. 

Alternatively, download and install the Windows version of the MATLAB Runtime for R2023b 
from the following link on the MathWorks website:

    https://www.mathworks.com/products/compiler/mcr/index.html
   
For more information about the MATLAB Runtime and the MATLAB Runtime installer, see 
"Distribute Applications" in the MATLAB Compiler documentation  
in the MathWorks Documentation Center.

2. Files to Deploy and Package

Files to Package for Standalone 
================================
-hello.exe
-MCRInstaller.exe 
    Note: if end users are unable to download the MATLAB Runtime using the
    instructions in the previous section, include it when building your 
    component by clicking the "Runtime included in package" link in the
    Deployment Tool.
-This readme file 



3. Definitions

For information on deployment terminology, go to
https://www.mathworks.com/help and select MATLAB Compiler >
Getting Started > About Application Deployment >
Deployment Product Terms in the MathWorks Documentation
Center.

这个readme.txt文件里面包含了一些关于这个应用的信息,比如如何安装MATLAB Runtime,如何运行这个应用等等。

这里最重要的就是安装这个MCR,我们可以从requiredMCRProducts.txt中产看版本信息,然后去MATLAB官网下载对应的MCR安装包。

35010	

其他文件信息不再赘述。

安装包

当然,我们可以根据上面的readme.txt来安装这个应用,但是这个过程太繁琐了,我们可以把这个应用打包成一个安装包,然后一键安装。

这里我们就需要另外一个工具。修仙的朋友们请输入:

help compiler.package.installer

我们可以调用这个函数来产生一个安装包,这个包里最重要的参数有两个:

  • 第一个不具名参数:要打包的应用,直接用前面编译好的结果就行
  • RuntimeDelivery:MATLAB Runtime的安装包的提供方式,可以是web,可以是installer

当选择web时,这个安装包会包含一个URL,用户安装时会提示从这个URL下载MCR安装包。当选择installer时,这个安装包会包含MCR安装包,用户可以直接安装。

appFile = "hello.m";
buildResults = compiler.build.standaloneApplication(appFile);

% >> buildResults
% buildResults =
%   Results - 属性:

%                   BuildType: 'standaloneApplication'
%                       Files: {2x1 cell}
%     IncludedSupportPackages: {}
%                     Options: [1x1 compiler.build.StandaloneApplicationOptions]

%% package the standalone application

compiler.package.installer(buildResults, ...
    'InstallerName', 'HelloInstall', ...
    'RuntimeDelivery', 'web'...
    );


compiler.package.installer(buildResults, ...
    'InstallerName', 'HelloInstallWithRuntime', ...
    'RuntimeDelivery', 'installer'...
    );

这里我们展示了两种调用方式,web的方式会产生一个很小的安装文件:

  • helloInstaller.exe

另外一种方式会产生一个接近500M的玩意,包含了所需要的MCR安装内容,直接安装即可使用。

这两个文件的大小参见:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 首先,一定要相信MATLAB,它能做到一切,但是得加钱!
  2. 其次,MATLAB的应用部署技术线很多,不同的应用场景有不同的选择。
  3. 这个TUI的可执行文件还很小的,只有1.2M,用起来也很方便。

http://www.kler.cn/a/467790.html

相关文章:

  • LabVIEW瞬变电磁接收系统
  • VisionPro软件Image Stitch拼接算法
  • 【跟着官网学技术系列之MySQL】第2天之MySQL版本:创新和 LTS
  • uniapp中判断设备类型
  • 数据挖掘——朴素贝叶斯分类
  • 电脑里msvcr120.dll文件丢失怎样修复?
  • [网络安全]sqli-labs Less-3 解题详析
  • vue elementUI Plus实现拖拽流程图,不引入插件,纯手写实现。
  • Vue的data和methods
  • 面试题解,Java中的“字节码”剖析
  • HP 电脑开机黑屏 | 故障判断 | BIOS 恢复 | BIOS 升级
  • 改善 Kibana 中的 ES|QL 编辑器体验
  • 智能工厂的设计软件 应用场景的一个例子: 为AI聊天工具添加一个知识系统 之20 再次重建 之5 项目文件三大部 整“拼”项目文档总述
  • vs 2022 中xml 粘贴为Class 中,序列化出来的xml 的使用
  • 九进制转10进制
  • Git 如何在IDEA中进行使用
  • SAP系统中的标准价、移动平均价是什么?有何区别?物料分类账的优点
  • 基于开发/发布/缺陷分离模型的 Git 分支管理实践20250103
  • Day3 微服务 微服务保护(请求限流、线程隔离、服务熔断)、Sentinel微服务保护框架、分布式事务(XA模式、AT模式)、Seata分布式事务框架
  • 【Redis经典面试题十】热key与大key的问题如何解决?
  • 简述 Spring 的 控制反转(IoC) 和 依赖注入(DI)
  • css 页面组件遮挡
  • 【从零开始入门unity游戏开发之——C#篇42】C#补充知识——随机数(Random)、多种方法实现string字符串拼接、语句的简写
  • 我用AI学Android Jetpack Compose之理解声明式UI
  • Jmeter-性能测试工具的安装教程
  • 计算机网络知识总结-网络安全