compiler.build.excelAddIn
该函数仅支持 Windows® 操作系统。
语法
说明
compiler.build.excelAddIn( 使用 FunctionFiles)FunctionFiles 指定的 Excel® 函数创建一个 MATLAB® 加载项。在创建 Excel 加载项之前,请安装支持的编译器。
compiler.build.excelAddIn( 使用一个或多个名称-值参量指定选项来创建一个 Excel 加载项。选项包括加载项名称、输出目录以及是否生成 Microsoft® Visual Basic® 文件。FunctionFiles,Name,Value)
compiler.build.excelAddIn( 使用 opts)compiler.build.excelAddInOptions 对象 opts 指定选项创建一个 Excel 加载项。不能使用名称-值参量指定任何其他选项。
示例
使用生成幻方的函数文件在 Excel 系统上创建 Windows 加载项。
确保已安装以下软件:
Windows SDK。有关详细信息,请参阅 Windows SDK。
MinGW-w64。要从 MathWorks 文件交换中心安装它,请参阅 MATLAB 对 MinGW-w64 C/C++/Fortran 编译器的支持。
使用
mbuild -setup -client mbuild_com确保 MATLAB 能够创建 Excel 加载项。
在 MATLAB 中,定位要部署为 MATLAB 加载项的 Excel 函数。对于此示例,使用 中的文件 matlabroot\extern\examples\compilermagicsquare.m。
appFile = fullfile(matlabroot,'extern','examples','compiler','magicsquare.m');
使用 compiler.build.excelAddIn 命令构建 Excel 加载项。
compiler.build.excelAddIn(appFile);
该函数会在当前工作目录中名为 magicsquareexcelAddIn 的文件夹中生成以下文件:
dlldata.cGettingStarted.htmlincludedSupportPackages.txtmagicsquare.defmagicsquare.bas(仅当您启用'GenerateVisualBasicFile'选项时)magicsquare.rcmagicsquare.xla(仅当您启用'GenerateVisualBasicFile'选项时)magicsquare_1_0.dllmagicsquare_dll.cppmagicsquare_idl.hmagicsquare_idl.idlmagicsquare_idl.tlbmagicsquare_idl_i.cmagicsquare_idl_p.cmagicsquareClass_com.cppmagicsquareClass_com.hppmccExcludedFiles.logmwcomtypes.hmwcomtypes_i.cmwcomtypes_p.creadme.txtrequiredMCRProducts.txtunresolvedSymbols.txt
在 Excel 系统上创建一个 Windows 加载项并使用名称-值参量对其进行自定义。
对于此示例,使用 中的文件 matlabroot\extern\examples\compilermagicsquare.m。
appFile = fullfile(matlabroot,'extern','examples','compiler','magicsquare.m');
使用 compiler.build.excelAddIn 命令构建 Excel 加载项。使用名称-值参量指定加载项名称和版本,生成 Microsoft Visual Basic 文件并启用详尽输出。
compiler.build.excelAddIn(appFile,'AddInName','MyMagicSquare', ... 'AddInVersion','2.0', ... 'GenerateVisualBasicFile','on', ... 'Verbose','on');
该函数会在当前工作目录中名为 MyMagicSquareexcelAddIn 的文件夹中生成以下文件:
dlldata.cGettingStarted.htmlincludedSupportPackages.txtmagicsquareClass_com.cppmagicsquareClass_com.hppmccExcludedFiles.logmwcomtypes.hmwcomtypes_i.cmwcomtypes_p.cMyMagicSquare.basMyMagicSquare.defMyMagicSquare.rcMyMagicSquare.xlaMyMagicSquare_2_0.dllMyMagicSquare_dll.cppMyMagicSquare_idl.hMyMagicSquare_idl.idlMyMagicSquare_idl.tlbMyMagicSquare_idl_i.cMyMagicSquare_idl_p.creadme.txtrequiredMCRProducts.txtunresolvedSymbols.txt
使用 compiler.build.ExcelAddInOptions 对象在 Excel 系统上创建多个 Windows 加载项。
对于此示例,使用 中的文件 matlabroot\extern\examples\compilermagicsquare.m。
appFile = fullfile(matlabroot,'extern','examples','compiler','magicsquare.m');
使用 appFile 创建 ExcelAddInOptions 对象。使用名称-值参量指定一个公共输出目录,生成一个 Visual Basic 文件,并启用详尽输出。
opts = compiler.build.excelAddInOptions(appFile, ... 'OutputDir','D:\Documents\MATLAB\work\ExcelAddInBatch', ... 'GenerateVisualBasicFile','on', ... 'Verbose','on');
使用 ExcelAddInOptions 对象构建加载项。
compiler.build.excelAddIn(opts);
要使用具有相同选项的函数文件 myMagic2.m 创建新的加载项,请在再次运行构建函数之前使用点符号修改现有 ExcelAddInOptions 对象的 FunctionFiles 参量。
opts.FunctionFiles = 'myMagic2.m';
compiler.build.excelAddIn(opts);通过修改 FunctionFiles 参量并重新编译,您可以使用相同的选项对象创建多个加载项。
创建一个 Excel 加载项并将有关构建类型、生成的文件、包含的支持包和构建选项的信息保存到 compiler.build.Results 对象中。
使用文件 magicsquare.m 进行编译。
results = compiler.build.excelAddIn('magicsquare.m')results =
Results with properties:
BuildType: 'excelAddIn'
Files: {2×1 cell}
IncludedSupportPackages: {}
Options: [1×1 compiler.build.ExcelAddInOptions]
RuntimeDependencies: [1×1 compiler.runtime.Dependencies]Files 属性包含以下已编译文件的路径:
magicsquare_1_0.dllGettingStarted.html
注意
仅当您在构建命令中启用 magicsquare.bas 选项时,文件 magicsquare.xla 和 Files 才会包含在 'GenerateVisualBasicFile' 中。
输入参数
实现 MATLAB 函数的文件,指定为字符向量、字符串标量、字符串数组或字符向量元胞数组。文件路径可以是相对于当前工作目录的路径,也可以是绝对路径。文件必须具有以下扩展名之一:.m、.p、.mlx 或 .mexa64。
示例: ["myfunc1.m","myfunc2.m"]
数据类型: char | string | cell
Excel 加载项构建选项,指定为 compiler.build.ExcelAddInOptions 对象。
名称-值参数
以 Name1=Value1,...,NameN=ValueN 的形式指定可选参量对组,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。
示例: 'Verbose','on'
Excel 加载项的名称,指定为字符向量或字符串标量。生成的加载项的默认名称是 FunctionFiles 参量的第一个条目。名称必须以字母开头,并且只能包含字母字符和下划线。
示例: 'AddInName','myAddIn'
数据类型: char | string
加载项版本,指定为字符向量或字符串标量。
示例: 'AddInVersion','4.0'
数据类型: char | string
Excel 加载项中包含的附加文件和文件夹,指定为字符向量、字符串标量、字符串数组或字符向量元胞数组。路径可以是相对于当前工作目录的路径,也可以是绝对路径。
示例: 'AdditionalFiles',["myvars.mat","data.txt"]
数据类型: 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
类的名称,指定为字符向量或字符串标量。类名必须符合 Excel 加载项类名要求。
默认值是 FunctionFiles 参量中列出的第一个文件的名称加上 Class。
示例: 'ClassName','magicsquareClass'
数据类型: char | string
启用调试符号的标志,指定为 'on' 或 'off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true,值 'off' 等效于 false。因此,可以将此属性的值用作逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。
如果将此属性设置为
'on',则调试符号信息将包含在编译的工件中。此选项还会使mbuild将相应的调试标志传递到系统编译器。通过调试选项,您可以回溯到能够确定故障是发生在 MATLAB Runtime 初始化、函数调用还是终止例程中的时间点。此选项不允许您使用外部调试器调试 MATLAB 文件。如果将此属性设置为
'off',则不会包含调试符号。这是默认选项。
示例: 'DebugSymbols','on'
数据类型: logical
嵌入可部署存档的标志,指定为 'on' 或 'off',或指定为数值或逻辑 1 (true) 或 0 (false)。值 'on' 等效于 true,值 'off' 等效于 false。因此,可以将此属性的值用作逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。
如果将此属性设置为
'on',则该函数会将可部署存档嵌入到 Excel 加载项中。如果将此属性设置为
'off',则此函数会将可部署存档生成为单独的文件。
示例: 'EmbedArchive','Off'
数据类型: logical
自 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
用于生成 Visual Basic 文件 (.bas) 和 Excel 加载项文件 (.xla) 的标志,指定为 'on' 或 'off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true,值 'off' 等效于 false。因此,可以将此属性的值用作逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。
如果将此属性设置为
'on',则该函数将生成一个 Excel 加载项 XLA 文件和一个 Visual Basic BAS 文件,其中包含加载项的 Microsoft Excel 公式函数接口。如果将此属性设置为
'off',则该函数不会生成 Visual Basic 文件或 Excel 加载项文件。
注意
要生成 Excel 加载项文件 (.xla),您必须启用 Excel 设置中的“信任对 VBA 工程对象模型的访问”。
示例: 'GenerateVisualBasicFile','on'
数据类型: logical
混淆可部署存档的标志,指定为 '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
保存编译文件的输出目录的路径,指定为字符向量或字符串标量。该路径可以是相对于当前工作目录的路径,也可以是绝对路径。
构建文件夹的默认名称是加载项名称加上 excelAddIn。
示例: 'OutputDir','D:\Documents\MATLAB\work\mymagicexcelAddIn'
数据类型: 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',则命令行窗口不会显示进度信息。
示例: 'Verbose','on'
数据类型: logical
输出参量
编译结果,以 compiler.build.Results 对象形式返回。Results 对象包含:
编译类型,即
'excelAddIn'以下文件的路径:
GettingStarted.htmlAddInName_AddInVersion.dll(如果启用AddInName.bas'GenerateVisualBasicFile'选项)(如果启用AddInName.xla'GenerateVisualBasicFile'选项)
包含的支持包的列表
构建选项,指定为
ExcelAddInOptions对象必需和可选依赖项的列表,指定为
Dependencies对象
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)