主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

使用 .NET 程序集编译器打包 MATLAB 函数

支持的平台: Windows®

此示例演示了如何使用 .NET 程序集编译器将 MATLAB® 函数打包到 .NET 程序集。提供的 .NET 应用程序演示了如何通过 MWArray API 在 MATLAB 函数和 .NET 应用程序之间传递矩阵。

在 R2025a 之前的版本中: 使用库编译器创建 .NET 程序集,具体操作请参阅生成 .NET 程序集并构建 .NET 应用程序 (R2024b)

前提条件

  • 请确认您已安装与 MATLAB Compiler SDK™ 兼容的 .NET 编译器。有关详细信息,请参阅MATLAB Compiler SDK .NET 目标要求

  • 最终用户必须安装 MATLAB Runtime 才能运行应用程序。有关详细信息,请参阅下载并安装 MATLAB Runtime

    出于测试目的,您可以使用安装的 MATLAB 来代替 MATLAB Runtime

创建 MATLAB 函数

在 MATLAB 中,检查您想要打包的 MATLAB 代码。在此示例中,请在名为 MagicProject 的新文件夹中创建一个名为 magicsquare.m 的 MATLAB 函数。

function y = magicsquare(x)
y = magic(x);

在 MATLAB 命令提示符下,输入 magicsquare(5)

输出是一个 5×5 矩阵。

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

创建工程和编译任务

使用 .NET 程序集编译器创建 .NET 程序集的编译器任务。编译器任务允许您为特定部署目标编译工程中的文件。

要打开该 App,在 App 选项卡上,展开 App 图库。在应用程序部署部分,点击.NET 程序集编译器

Application Deployment section of the Apps gallery

您还可以在 MATLAB 命令行窗口中使用 dotNetAssemblyCompiler 函数打开该 App。

Create compiler task dialog box with the text 'To deploy your MATLAB code, you need a MATLAB project to organize code and a compiler task to handle deployment.' The option 'Start a new project and create a compiler task' is selected.

打开 App 后,“创建编译器任务”对话框会提示您将任务添加到新的或现有 MATLAB 工程中。在此示例中,选择启动新工程并创建编译器任务,并在工作文件夹中创建一个名为 MagicProject 的新工程。有关创建和使用 MATLAB 工程的详细信息,请参阅创建工程

编辑器中打开了一个名为 DotNETAssembly1 的新编译任务。

您可以通过打开编译器任务管理器或转到管理任务选项卡并创建一个新的编译器任务来创建更多 .NET 编译器任务或为其他部署目标打包代码。

指定编译选项

在打包之前,您可以为 .NET 组件及其安装程序指定选项,以自定义构建和打包过程。例如,您可以混淆处理 MATLAB 代码,或指定在生成的安装程序中包含 MATLAB Runtime 的方法。

将 MATLAB 函数添加到 .NET 程序集。所有文件必须位于工程根文件夹中才能添加到工程中。在此示例中,在编译器任务的导出的函数部分,点击添加导出的函数,然后选择 magicsquare.m。在“工程”面板中,该文件现在带有标签 DesignExported Function File

Exported file section of the compiler task with no file selected and a button labeled Add Exported Function

.NET 程序集信息部分,将字符串 MyDotNetAssembly 替换为您的 .NET 程序集名称,即 magicsquarelib

要为生成的文件选择不同的输出位置,请更新输出位置部分中的路径。

.NET API 选择部分,选择用于在 .NET 应用程序与 MATLAB 函数之间交换数据的 API。在此示例中,请选择 mwArray API。有关详细信息,请参阅选择 .NET 部署选项

.NET API Selection section with the option 'Create interface that uses the mwArray API for .NET' selected

创建示例代码(可选)

MATLAB Compiler SDK 可以生成示例 .NET 代码,演示如何调用您导出的 MATLAB 函数。您可以使用示例来实现您自己的应用程序或者测试编译后的工件。如果您编写自己的 .NET 应用程序代码,可以在打包 MATLAB 函数后将其移动到适当的目录中。有关详细信息,请参阅创建示例代码来调用导出函数

要创建一个示例 MATLAB 文件,请点击示例部分中的创建新示例。选择文件 magicsquare.m。一个 MATLAB 实时脚本已为您打开,供您编辑。在编辑采样输入下,输入值 5,然后保存文件。文件 sampleFiles\magicsquareSample1.mlx 被添加到任务的示例部分。

查看代码和打包 .NET 程序集

要查看包含有关构建和打包组件的说明的代码,请点击导出编译脚本旁边的箭头,然后选择显示代码。在右侧,一个窗口显示了一个部署脚本,其中包含与您的构建选项相对应的 compiler.build.dotNETAssemblycompiler.package.installer 函数。您可以通过点击导出编译脚本按钮将此代码转换为 MATLAB 脚本文件。运行生成的构建脚本与点击编译和打包按钮等效。

Two buttons labeled Export Build Script and Build and Package

要创建 .NET 组件和安装程序,请点击编译和打包。要仅创建 .NET 组件,请点击编译和打包旁边的箭头,然后选择编译

编译器会在工程文件夹中的 <compiler_task_name>/output 文件夹中生成文件。build 子文件夹包含 .NET 程序集,而 package 子文件夹包含您的程序集的安装程序以及 MATLAB 运行时。要为生成的文件选择不同的输出位置,请更新输出位置部分中的路径。

如果您创建了安装程序,package 子文件夹中包含您的共享库文件的安装程序以及 MATLAB 运行时

小心

生成的安装程序不包含.NET 应用程序可执行文件。您必须在打包后编译您的 .NET 应用程序。然后,手动分发应用程序文件以及 MATLAB Runtime,或者使用 compiler.package.installerAdditionalFiles 选项将可执行文件包含在安装程序中。有关详细信息,请参阅将 MATLAB Compiler SDK 文件分发给应用程序开发人员

将 .NET 程序集集成到 .NET 应用程序中

创建 .NET 程序集后,在您首选的 .NET 开发环境中编写 .NET 应用程序的源代码。有关详细信息,请参阅设置 .NET 开发环境

如果您在打包前创建了示例代码,MATLAB Compiler SDK 会在 samples 文件夹中生成一个名为 magicsquareSample1.cs 的示例 C# .NET 应用程序。

 magicsquareSample1.cs

该应用程序执行以下操作:

  • 使用 try-catch 模块处理异常。

  • 创建一个 MWNumericArray 数组来存储输入数据。

  • 实例化 Class1 对象 results

  • 调用 magicsquare 方法,其中第一个参数指定输出参量的数量,后续参数按顺序作为输入参量传递给函数。

  • 将函数的输出写入控制台。

有关使用 MWArray API 的更多详细信息,请参阅使用 MWArray API 进行数据编组

编写源代码后,使用 Microsoft® Visual Studio® 构建并运行您的 .NET 应用程序。

  1. 打开 Microsoft Visual Studio 并创建一个名为 MainApp 的 C# Console App (.NET Framework)

  2. 如有必要,删除在工程中创建的任何源代码文件。

  3. samples 文件夹中生成的 C# 示例应用程序代码 magicsquareSample1.cs 添加到工程中。

  4. 在 Visual Studio 中,添加对程序集文件 magicsquarelib.dll 的引用,该文件位于生成或安装程序集的文件夹中。

  5. 添加对 MWArray API 的引用。该文件位于 <matlabroot>\toolbox\dotnetbuilder\bin\win64\<framework_version>\MWArray.dll,其中 <matlabroot> 是您的 MATLAB 或 MATLAB 运行时安装位置。

  6. 转至 Build,然后转至 Configuration Manager,并将平台从 Any CPU 更改为 x64

  7. 添加完代码和引用后,使用 Visual Studio 编译应用程序。

    编译过程会生成一个名为 magicsquareSample1.exe 的可执行文件。

  8. 从 Visual Studio、在命令行窗口中或通过双击生成的可执行文件来运行应用程序。

    该应用程序返回与您在打包过程中创建的示例 MATLAB 代码相同的输出。

        17    24     1     8    15
        23     5     7    14    16
         4     6    13    20    22
        10    12    19    21     3
        11    18    25     2     9

要在 MATLAB 外部运行.NET 应用程序,您必须安装 MATLAB 运行时。有关详细信息,请参阅关于 MATLAB Runtime。如果您使用编译和打包创建了安装程序,该安装程序包含与用于编译 .NET 程序集的 MATLAB 版本相匹配的 MATLAB 运行时版本。

要部署 .NET 应用程序,请将代码存档和可执行文件 .exe 分发给最终用户。

另请参阅

|

主题