主要内容

生成。net程序集和构建。net应用程序

支持平台:窗户®

这个例子展示了如何从MATLAB中创建.NET程序集®函数,并将生成的程序集集成到. net应用程序中。

先决条件

  • 确认你已经满足了所有的要求MATLAB编译SDK™. net目标需求。详细信息请参见MATLAB编译器SDK .NET目标要求

  • 验证您已经微软®Visual Studio®安装。

  • 最终用户必须安装MATLAB运行时运行应用程序。详细信息请参见安装和配置MATLAB运行时

    出于测试目的,您可以使用MATLAB的安装而不是MATLAB运行时

中创建函数MATLAB

在MATLAB中,检查要打包的MATLAB代码。对于本例,创建一个名为makesquare.m

函数Y = makesquare(x) Y = magic(x);

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

输出是一个5 × 5矩阵。

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

使用库编译器创建.NET程序集

方法将函数打包到.NET程序集中库的编译器或者,如果您想使用编程方法从MATLAB命令窗口创建. net程序集,请参见使用compiler.build.dotNETAssembly创建。net程序集

  1. MATLAB应用程序标签,在最右边应用程序部分,单击箭头。在应用程序部署,点击库的编译器

    或者,您可以打开库的编译器应用程序从MATLAB命令提示符。

    libraryCompiler

    打开库编译器应用程序的编译器选项卡

  2. 类型部分,单击net程序集

    库的编译器app项目窗口,指定要部署的MATLAB应用程序的文件。

    1. 导出功能部分,单击向项目添加导出函数

    2. 添加文件窗口,浏览到示例文件夹,并选择要打包的函数。点击开放

    该函数被添加到导出的函数文件列表中。重复此步骤将多个文件打包到同一个应用程序中。

    对于本例,选择文件makesquare.m

  3. 包装选项部分的工具条中,决定是否包含MATLAB运行时通过选择其中一个选项,在生成的应用程序中安装:

    • 从网上下载运行时—生成安装程序,用于下载MATLAB运行时并将其与已部署的MATLAB应用程序一起安装。您可以指定安装程序的文件名。

    • 包中包含运行时—生成包含MATLAB运行时安装程序。您可以指定安装程序的文件名。

      请注意

      第一次选择此选项时,系统会提示您下载MATLAB运行时安装程序。

指定程序集文件设置

类的类映射,然后定义程序集的名称并验证.m您要构建到应用程序中的文件。

  1. 库名称字段自动填充makesquare作为程序集的名称。将其重命名为MagicSquareComp.在程序集的实现中使用相同的名称。

    库名称字段不支持空格或特殊字符。

  2. 中定义的函数makesquare.m映射为MagicSquareClass.双击类以更改类名。

创建示例MATLAB文件

您可以使用项目中的任何MATLAB文件来生成一个示例MATLAB文件,该文件用于生成一个. net示例驱动程序文件。虽然.NET示例文件不是创建程序集所必需的,但是您可以使用它们作为在目标语言中实现.NET应用程序的指南,如图所示集成。net程序集到。net应用程序

样品部分中,选择创建新样本,并单击makesquare.m.打开一个MATLAB文件供您编辑。

演示函数y = makesquare(x)执行的示例脚本X = 0;%在这里初始化xY = maksquare (x);

改变X = 0X = 5,保存文件,返回到库的编译器应用程序。

谨慎

您必须编辑MATLAB示例文件以输出所需的结果。生成的目标语言示例文件使用与示例MATLAB文件相同的输入和输出。

有关更多信息和限制,请参见驱动文件创建示例

自定义应用程序及其外观

库的编译器应用程序,您可以自定义安装程序,自定义应用程序,并添加有关应用程序的更多信息。

  • 图书馆信息—已部署应用的信息。您还可以通过更改应用程序图标和启动画面来自定义应用程序的外观。生成的安装程序使用此信息填充已安装的应用程序元数据。看到自定义安装程序

  • 其他安装程序选项-生成的安装程序的默认安装路径和自定义logo选择。看到修改安装路径

  • 运行库所需的文件-生成的应用程序运行所需的附加文件。这些文件包含在生成的应用程序安装程序中。看到在编译器项目中管理所需的文件

  • 为最终用户安装的文件-与应用程序一起安装的文件。

    看到指定与应用程序一起安装的文件

  • 其他运行时设置-用于控制生成的可执行文件的平台特定选项。详细信息请参见其他运行时设置

    用于自定义应用程序的库编译器应用程序中的字段

打包应用程序

当您完成选择包装选项后,保存您的库的编译器投射并生成打包的应用程序。

  1. 点击

    在“保存项目”对话框中,指定要保存项目的位置。

  2. 对话框,验证一下当处理完成时打开输出文件夹被选中。

    打包过程完成后,检查目标文件夹中生成的输出。

    • 生成三个文件夹:for_redistributionfor_redistribution_files_only,for_testing

      有关在这些文件夹中生成的文件的详细信息,请参见MATLAB函数打包后生成的文件

    • 日志文件PackagingLog.html包含打包结果。

使用。net程序集创建compiler.build.dotNETAssembly

作为一种替代库的编译器app,您可以使用编程方法创建. net程序集。方法创建程序集库的编译器,请参阅集成。net程序集到。net应用程序

  1. 如果您还没有创建该文件makesquare.m,复制其中的示例文件matlabroot\工具箱\ dotnetbuilder \ \ VS15 \ \ MagicSquareExample \ MagicSquareComp净例子

    拷贝文件(fullfile (matlabroot,“工具箱”“dotnetbuilder”“例子”...“VS15”“净”“MagicSquareExample”“MagicSquareComp”“makesquare.m”));
  2. 将以下代码保存在名为makesquareSample1.m

    X = 5;Y = maksquare (x);

  3. 方法构建.NET程序集compiler.build.dotNETAssembly函数。使用名称-值参数指定程序集名称、类名称和示例文件。

    buildResults = compiler.build.dotNETAssembly(appFile,...“AssemblyName”“MagicSquareComp”...“名称”“MagicSquareClass”...“SampleGenerationFiles”“makesquareSample1.m”);

    属性中指定其他选项compiler.build使用名称-值参数命令。详细信息请参见compiler.build.dotNETAssembly

    compiler.build.Results对象buildResults包含有关生成类型、生成文件、包含的支持包和生成选项的信息。

    该函数在名为MagicSquareCompdotNETAssembly在当前工作目录下:

    • 样品\ makesquareSample1.cs- c# . net示例文件。

    • GettingStarted.html- HTML文件,包含从命令行编译. net驱动程序的步骤。

    • includedSupportPackages.txt—列出程序集中包含的所有支持文件的文本文件。

    • MagicSquareComp.dll—动态链接库文件mwArrayAPI。

    • MagicSquareComp.xml文档的XML文件mwArray组装。

    • MagicSquareComp_overview.html控件生成参数的HTML文件,其中包含访问程序集的要求mwArray类的层次结构。

    • MagicSquareCompNative.dll-可以使用本机API访问的动态链接库文件。

    • MagicSquareCompNative.xml-包含本机程序集文档的XML文件。

    • MagicSquareCompVersion.cs-包含版本信息的c#文件。

    • mccExcludedFiles.log-日志文件,其中包含未包含在应用程序中的任何工具箱功能的列表。有关不支持的函数的信息,请参见MATLAB编译器限制

    • 固定—包含包装和接口信息的文本文件。

    • requiredMCR2022世界杯八强谁会赢?Products.txt—需要的产品id的文本文件2022世界杯八强谁会赢?MATLAB运行时运行应用程序。

    • unresolvedSymbols.txt-包含未解析符号信息的文本文件。

    请注意

    生成的程序集不包含MATLAB运行时或者安装程序。方法创建安装程序buildResults对象,看到compiler.package.installer

集成。net程序集到。net应用程序

创建. net程序集后,可以将其集成到任何. net应用程序中。这个例子使用了在打包过程中生成的示例c#应用程序代码。您可以使用这个示例. net应用程序代码作为编写自己的应用程序的指南。

请注意

若要使用接受输入参数的更高级应用程序调用程序集,请使用c#或Visual Basic®应用程序MagicSquareApp位于对应的子文件夹:

matlabroot\工具箱\ dotnetbuilder \ \ VS15 \ \ MagicSquareExample \净例子

  1. 开放Microsoft Visual Studio并创建一个c#控制台应用程序(。净框架)被称为MainApp

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

  3. 添加示例c#应用程序代码makesquareSample1.cs这是在样品文件夹到项目。

    程序清单如下所示。

    使用系统;使用System.Collections.Generic;使用text;使用MathWorks.MATLAB.NET.Arrays;使用MathWorks.MATLAB.NET.Utility;使用MagicSquareComp;/// <总结> ///示例驱动程序代码,集成了一个编译的MATLAB函数///由MATLAB编译器SDK生成/// ///有关更多///信息请参阅MATLAB编译器SDK文档。///  class makesquareSample1 {static MagicSquareClass MagicSquareClassInstance;静态无效设置(){MagicSquareClassInstance =新的MagicSquareClass();} ///  ///使用makesquare函数的示例。 ///  public static void makesquareSample() { double xInData = 5.0; MWNumericArray yOut = null; Object[] results = null; try { MWNumericArray xIn = new MWNumericArray(xInData); results = MagicSquareClassInstance.makesquare(1, xIn); if (results[0] is MWNumericArray) { yOut = (MWNumericArray) results[0]; } Console.WriteLine(yOut); } catch (Exception e) { Console.WriteLine(e); } } ///  /// The main entry point for the application. ///  static void Main(string[] args) { try { Setup(); } catch (Exception e) { Console.WriteLine(e); Environment.Exit(1); } try { makesquareSample(); } catch (Exception e) { Console.WriteLine(e); Environment.Exit(1); } } }

    该程序执行以下操作:

    • 使用一个试一试-块来处理异常

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

    • 实例化的MagicSquareClass对象结果

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

    • 将函数输出写入控制台

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

  5. 属性的引用MWArrayAPI。

    如果你的系统上安装了MATLAB matlabroot\ \ dotnetbuilder \ bin \ win64 \工具箱< framework_version >\ MWArray.dll
    如果MATLAB运行时安装在您的系统上 < MATLAB_RUNTIME_INSTALL_DIR >\ \ dotnetbuilder \ bin \ win64 \工具箱< framework_version >\ MWArray.dll

  6. 构建,然后配置管理器,并将平台从任何CPUx64

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

    构建过程生成一个名为makesquareSample1.exe

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

    应用程序返回与示例MATLAB代码相同的输出。

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

另请参阅

|||

相关的话题

Baidu
map