compiler.build.standaloneWindowsApplication
创建一个不启动 Windows 命令 shell 的独立应用程序,用于在 MATLAB 外部部署
语法
说明
小心
只有 Windows® 操作系统才支持此函数。
compiler.build.standaloneWindowsApplication( 使用 MATLAB® 函数、类或由 AppFile)AppFile 指定的 App 创建仅适用于 Windows 的独立应用程序。该应用程序在执行时不会打开 Windows 命令 shell,因此不会显示控制台输出。生成的可执行文件具有文件扩展名 .exe,并且不包括 MATLAB Runtime 或安装程序。
compiler.build.standaloneWindowsApplication( 使用由一个或多个名称-值参量指定的额外选项创建独立的 Windows 应用程序。选项包括可执行文件名称、版本号,以及图标和启动图像。AppFile,Name,Value)
compiler.build.standaloneWindowsApplication( 使用由 opts)compiler.build.StandaloneApplicationOptions 对象 opts 指定的额外选项创建独立的 Windows 应用程序。不能使用名称-值参量指定任何其他选项。
示例
在 Windows 系统上创建一个独立的图形应用程序,用于显示绘图。
编写一个 MATLAB 函数,用于绘制值 1 到 10。将该函数保存在名为 myPlot.m 的文件中。
function myPlot()
plot(1:10)使用 compiler.build.standaloneWindowsApplication 命令编译独立的 Windows 应用程序。
compiler.build.standaloneWindowsApplication('myPlot.m');
此语法会在当前工作目录中名为 myPlotstandaloneApplication 的文件夹中生成以下文件:
includedSupportPackages.txt- 列出应用程序中包含的所有支持文件的文本文件。myPlot.exe- 可执行文件。mccExcludedFiles.log- 包含应用程序中未包含的任何工具箱函数列表的日志文件。有关不受支持的函数的详细信息,请参阅 MATLAB Compiler 限制。readme.txt- 包含有关部署前提条件的信息以及要打包以进行部署的文件列表的自述文件。requiredMCRProducts.txt- 包含 MATLAB Runtime 运行应用程序所需产品的产品 ID 的文本文件。splash.png- 包含应用程序启动时显示的启动图像的文件。unresolvedSymbols.txt- 包含所有未解析符号的文本文件。
要运行 myPlot.exe,请从文件浏览器导航到 myPlotstandaloneApplication 文件夹并双击 myPlot.exe,在 MATLAB 命令行窗口中执行 !myPlot,或者在 Windows 命令 shell 中执行 myPlot.exe。
该应用程序会先显示一个启动图像,随后显示一个线图的 MATLAB 图窗。
图窗 1 (myPlot.exe)

在 Windows 系统上创建一个独立的图形应用程序并使用名称-值参量对它进行自定义。
创建 xVal 作为 0 到 2π 之间的线性间隔值的向量。在这些值之间使用 π/40 作为增量。创建 yVal 作为 x 的正弦值。将这两个变量保存在名为 myVars.mat 的 MAT 文件中。
xVal = 0:pi/40:2*pi; yVal = sin(xVal); save('myVars.mat','xVal','yVal');
创建一个名为 myPlot.m 的函数文件来创建 xVal 和 yVal 变量的线图。
function myPlot() load('myVars.mat'); plot(xVal,yVal)
使用 compiler.build.standaloneWindowsApplication 函数编译该独立应用程序。使用名称-值参量指定可执行文件名称和版本号。
compiler.build.standaloneWindowsApplication('myPlot.m', ... 'ExecutableName','SineWaveApp',... 'ExecutableVersion','2.0')
此语法会在当前工作目录中名为 SineWaveAppstandaloneApplication 的文件夹中生成以下文件:
includedSupportPackages.txtmccExcludedFiles.logreadme.txtrequiredMCRProducts.txtSineWaveApp.exesplash.pngunresolvedSymbols.txt
要运行 SineWaveApp.exe,请从文件浏览器导航到 myPlotstandaloneApplication 文件夹并双击 SineWaveApp.exe,在 MATLAB 命令行窗口中执行 !SineWaveApp.exe,或者在 Windows 命令提示符下执行 SineWaveApp.exe。
该应用程序会先显示一个启动图像,随后显示一个正弦波的 MATLAB 图窗。
图 1 (SineWaveApp.exe)

使用 compiler.build.StandaloneApplicationOptions 对象在 Windows 系统上创建多个独立的图形应用程序。
编写一个 MATLAB 函数,用于绘制值 1 到 10。将该函数保存在名为 myPlot.m 的文件中。
function myPlot()
plot(1:10)
使用 myPlot.m 创建一个 StandaloneApplicationOptions 对象。使用名称-值参量指定一个共用输出目录,并在编译过程中显示进度信息。
opts = compiler.build.StandaloneApplicationOptions('myPlot.m', ... 'OutputDir','D:\Documents\MATLAB\work\WindowsApps', ... 'Verbose','On')
opts =
StandaloneApplicationOptions with properties:
CustomHelpTextFile: ''
EmbedArchive: on
ExecutableIcon: 'C:\Program Files\MATLAB\R2025b\toolbox\compiler\packagingResources\default_icon_48.png'
ExecutableName: 'myPlot'
ExecutableSplashScreen: 'C:\Program Files\MATLAB\R2025b\toolbox\compiler\packagingResources\default_splash.png'
ExecutableVersion: '1.0.0.0'
AppFile: 'myPlot.m'
TreatInputsAsNumeric: on
AdditionalFiles: {}
AutoDetectDataFiles: on
ExternalEncryptionKey: [0×0 struct]
ObfuscateArchive: off
SecretsManifest: ''
SupportPackages: {'autodetect'}
Verbose: on
OutputDir: 'D:\Documents\MATLAB\work\WindowsApps'通过将 StandaloneApplicationOptions 对象作为输入传递给编译函数来编译独立的图形应用程序。
compiler.build.standaloneWindowsApplication(opts);
要使用具有相同选项的函数文件 myPlot2.m 来创建新的应用程序,在再次运行编译函数之前,请使用圆点表示法修改现有 StandaloneApplicationOptions 对象的 AppFile。
opts.AppFile = 'example2.m';
compiler.build.standaloneWindowsApplication(opts);通过修改 AppFile 参量并重新编译,您可以使用同一个选项对象编译多个应用程序。
在 Windows 系统上创建一个独立的 Windows 应用程序,并将有关编译类型、生成的文件、包含的支持包和编译选项的信息保存到 compiler.build.Results 对象中。
使用文件 Mortgage.mlapp 进行编译。
results = compiler.build.standaloneWindowsApplication('Mortgage.mlapp')results =
Results with properties:
BuildType: 'standaloneWindowsApplication'
Files: {3×1 cell}
IncludedSupportPackages: {}
Options: [1×1 compiler.build.StandaloneApplicationOptions]
RuntimeDependencies: [1×1 compiler.runtime.Dependencies]Files 属性包含以下文件的路径:
Mortgage.exesplash.pngreadme.txt
输入参数
用于编译应用程序的主文件的路径,指定为行字符向量或字符串标量。该文件必须是 MATLAB 函数、类或以下类型之一的 App:.m、.p、.mlx、.mlapp 或者有效的 MEX 文件。
示例: 'mymagic.m'
数据类型: char | string
独立应用程序编译选项,指定为 compiler.build.StandaloneApplicationOptions 对象。
名称-值参数
将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。
示例: OutputDir='D:\work\myproject'
要包含在独立应用程序中的其他文件和文件夹,指定为字符向量、字符串标量、字符串数组或字符向量元胞数组。路径可以是相对于当前工作目录的路径,也可以是绝对路径。
示例: 'AdditionalFiles',["myvars.mat","myfunc.m"]
数据类型: char | string | cell
自动包含数据文件的标志,指定为 'on' 或 'off',或者指定为数值或逻辑 1 (true) 或 0 (false)。值 'on' 等效于 true,值 'off' 等效于 false。因此,可以将此属性的值用作逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。
如果将此属性设置为
'on',则您提供的作为特定函数(例如load和fopen)的输入的数据文件将自动包含在独立应用程序中。这是默认行为。如果将此属性设置为
'off',则必须使用AdditionalFiles属性将数据文件添加到应用程序中。
示例: 'AutoDetectDataFiles','Off'
数据类型: logical
包含面向应用程序最终用户的帮助文本的帮助文件的路径,指定为字符向量或字符串标量。该路径可以是相对于当前工作目录的路径,也可以是绝对路径。
示例: 'CustomHelpTextFile','D:\Documents\MATLAB\work\help.txt'
数据类型: char | string
嵌入可部署存档的标志,指定为 'on' 或 'off',或指定为数值或逻辑 1 (true) 或 0 (false)。值 'on' 等效于 true,值 'off' 等效于 false。因此,可以将此属性的值用作逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。
如果将此属性设置为
'on',则此函数会将存档嵌入在可部署可执行文件中。如果将此属性设置为
'off',则此函数会将可部署存档生成为单独的文件。
示例: 'EmbedArchive','Off'
数据类型: logical
图标图像的路径,指定为字符向量或字符串标量。该图像用作独立可执行文件的图标。该路径可以是相对于当前工作目录的路径,也可以是绝对路径。接受的图像类型为.jpg、.jpeg、.png、.bmp 和 .gif。
默认路径为:
'matlabroot\toolbox\compiler\packagingResources\default_icon_48.png'示例: 'ExecutableIcon','D:\Documents\MATLAB\work\images\myIcon.png'
数据类型: char | string
生成的应用程序的名称,指定为字符向量或字符串标量。默认值是 AppFile 的文件名。目标输出名称必须以字母或下划线字符开头,并且只能包含字母数字字符或下划线。
示例: 'ExecutableName','MagicSquare'
数据类型: char | string
启动画面图像的路径,指定为字符向量或字符串标量。该路径可以是相对于当前工作目录的路径,也可以是绝对路径。接受的图像类型为.jpg、.jpeg、.png、.bmp 和 .gif。图像大小调整为 400 像素 x 400 像素。
默认路径为:
'matlabroot\toolbox\compiler\packagingResources\default_splash.png'注意
这仅用于使用 compiler.build.standaloneWindowsApplication 编译的 Windows 应用程序。
示例: 'ExecutableSplashScreen','D:\Documents\MATLAB\work\images\mySplash.png'
数据类型: char | string
可执行文件版本,指定为字符向量或字符串标量。
注意
这仅适用于 Windows 操作系统。
示例: 'ExecutableVersion','4.0'
数据类型: char | string
自 R2024b 起
外部 AES 加密密钥和 MEX 密钥加载程序文件的路径,指定为标量结构体,其中恰好有两个分别名为 EncryptionKeyFile 和 RuntimeKeyLoaderFile 的行字符向量或字符串标量字段。两个结构体字段都是必需的。文件路径可以是相对于当前工作目录的路径,也可以是绝对路径。
例如,使用结构体 keyValueStruct 将加密密钥指定为 encrypt.key,将加载程序文件指定为 loader.mexw64。
keyValueStruct.EncryptionKeyFile='encrypt.key'; keyValueStruct.RuntimeKeyLoaderFile='loader.mexw64'
加密密钥文件必须采用以下受支持的格式之一:
二进制 256 位 AES 密钥,文件大小为 32 字节
十六进制编码的 AES 密钥,文件大小为 64 字节
MEX 文件加载程序在运行时检索解密密钥,并且必须是具有以下参量的接口:
prhs[0]- 输入,指定为静态值'get'的字符数组prhs[1]- 输入,指定为 CTF 组件 UUID 的字符数组plhs[0]- 输出,32 字节 UINT8 数字数组或 64 字节十六进制编码字符数组,具体取决于密钥格式
请勿在多个 CTF 之间共享同一个密钥。
示例: 'ExternalEncryptionKey',keyValueStruct
数据类型: struct
混淆可部署存档的标志,指定为 'on'/1/true 或 'off'/0/false。该值存储为 matlab.lang.onoffSwitchState 类型的 on/off 逻辑值。
如果将此属性设置为 'on',则会对最终用户混淆可部署存档中的文件夹结构和文件名,并且 .m、.mlapp、.p、.mat、MLX 文件、SFX 文件和 MEX 文件中包含的用户代码和数据将被放入存档内的用户包中。另外,所有 .m 文件在打包前会转换为 P 文件。
在运行时,系统会从用户包直接解密和加载 MATLAB 代码和数据,而不是将其提取到文件系统。在加载之前,系统会从用户包中临时提取 MEX 文件。
要在用户包中手动包含其他文件类型,请将每种文件类型以单独的扩展标记的形式添加到文件 中。matlabroot/toolbox/compiler/advanced_package_supported_files.xml
以下内容不受支持:
ver函数调用外部库,例如 DLL
进程外 MATLAB Runtime(用于 MATLAB Data Array 的 C++ 共享库)
进程外 MEX 文件执行(
mexhost、feval、matlab.mex.MexHost)在 R2023b 之前的版本中: v7.3 之外的
.mat文件
启用此选项等效于在指定了 -j 和 -s 的情况下使用 mcc。
如果将此属性设置为 'off',则不会混淆可部署存档。这是默认行为。
示例: 'ObfuscateArchive','on'
数据类型: logical
保存编译文件的输出目录的路径,指定为字符向量或字符串标量。该路径可以是相对于当前工作目录的路径,也可以是绝对路径。
编译文件夹的默认名称是可执行文件名称后跟 standaloneApplication。
示例: 'OutputDir','D:\Documents\MATLAB\work\MagicSquarestandaloneApplication'
数据类型: char | string
自 R2024b 起
机密清单 JSON 文件的路径,该文件指定要嵌入在可部署存档中的密钥,指定为字符向量或字符串标量。该路径可以是相对于当前工作目录的路径,也可以是绝对路径。
如果您的 MATLAB 代码调用 getSecret、getSecretMetadata 或 isSecret 函数,您必须在 JSON 机密清单文件中指定要嵌入可部署存档的密钥。如果您的代码调用 getSecret 并且您未指定 SecretsManifest 选项,则 MATLABCompiler™ 会发出警告,并在名为 的输出文件夹中生成一个模板 JSON 文件。通过在嵌入字段中指定密钥名称来修改此文件。<component_name>_secrets_manifest.json
setSecret 函数不可部署。要将密钥嵌入在可部署存档中,您必须在编译存档之前在 MATLAB 中调用 setSecret。
有关使用密钥进行部署的详细信息,请参阅处理已部署 App 中的敏感信息。
示例: 'SecretsManifest','D:\Documents\MATLAB\work\mycomponent\mycomponent_secrets_manifest.json'
数据类型: char | string
要包含的支持包,指定为以下选项之一:
'autodetect'(默认值)- 依赖关系分析过程会自动检测并包含所需的支持包。'none'- 不包括任何支持包。使用此选项可能会导致运行时错误。字符串标量、字符向量或字符向量元胞数组 - 仅包含指定的支持包。要列出已安装的支持包或特定文件使用的那些支持包,请参阅
compiler.codetools.deployableSupportPackages。
示例: 'SupportPackages',{'Deep Learning Toolbox Converter for TensorFlow Models','Deep Learning Toolbox Model for Places365-GoogLeNet Network'}
数据类型: char | string | cell
将命令行输入解释为数值的标志,指定为 'on' 或 'off',或指定为数值或逻辑 1 (true) 或 0 (false)。值 'on' 等效于 true,值 'off' 等效于 false。因此,可以将此属性的值用作逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。
如果将此属性设置为
'on',则命令行输入会被视为 MATLAB 双精度数值。如果将此属性设置为
'off',则命令行输入会被视为 MATLAB 字符向量。这是默认行为。
示例: 'TreatInputsAsNumeric','on'
数据类型: logical
控制编译详细程度的标志,指定为 'on' 或 'off',或者指定为数值或逻辑 1 (true) 或 0 (false)。值 'on' 等效于 true,值 'off' 等效于 false。因此,可以将此属性的值用作逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。
如果将此属性设置为
'on',则 MATLAB 命令行窗口会显示进度信息,指示编译过程期间的编译器输出。如果将此属性设置为
'off',则命令行窗口不会显示进度信息。这是默认行为。
示例: 'Verbose','on'
数据类型: logical
输出参量
编译结果,以 compiler.build.Results 对象形式返回。Results 对象包含:
编译类型,即
'standaloneApplication'以下文件的路径:
ExecutableName.exesplash.pngreadme.txt
包含的支持包的列表
编译选项,指定为
StandaloneApplicationOptions对象
限制
只有 Windows 操作系统才支持此函数。
该应用程序在执行时不会打开 Windows 命令 shell,因此不会显示控制台输出。
提示
要从系统命令提示符使用此函数创建 Windows 独立应用程序,请使用
matlab函数并指定-batch选项。例如:matlab -batch compiler.build.standaloneWindowsApplication('myapp.mlapp')
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)