主要内容

创建一个C共享库MATLAB代码

支持平台:窗户®, Linux®Mac

这个例子展示了如何使用MATLAB创建一个C共享库®函数。目标系统不需要MATLAB的授权副本。

创建函数MATLAB

  1. 在MATLAB中,检查您想打包的MATLAB代码。

    对于本例,复制矩阵随MATLAB附带到你的工作文件夹的文件夹。

    拷贝文件(fullfile (matlabroot,“外来的”“例子”“compilersdk”“c_cpp”“矩阵”),“矩阵”

    导航到新的矩阵工作文件夹中的子文件夹。

  2. 检查和测试功能addmatrix.mmultiplymatrix.m,eigmatrix.m

    addmatrix.m

    在MATLAB命令提示符下,输入addmatrix ([1 4 7;2 5 8;3 6 9], [1 4 7;2 5 8;3 6 9])

    的输出是:

    Ans = 2 8 14 4 10 16 6 12 18

    multiplymatrix.m

    在MATLAB命令提示符下,输入multiplymatrix ([1 4 7;2 5 8;3 6 9], [1 4 7;2 5 8;3 6 9])

    的输出是:

    Ans = 30 66 102 36 81 126 42 96 150

    eigmatrix.m

    在MATLAB命令提示符下,输入eigmatrix ([1 4 7;2 5 8;3 6 9])

    的输出是:

    Ans = 16.1168 -1.1168 -0.0000

使用库编译器App创建一个C共享库

方法构建一个C共享库库的编译器或者,如果您想从MATLAB命令窗口使用编程方法创建一个C共享库,请参见使用compiler.build.cSharedLibrary创建C共享库

  1. MATLAB应用程序标签,在最右边的应用程序部分,单击箭头。在应用程序部署,点击库的编译器.在MATLAB编译器项目窗口中,单击C共享库

    或者,您可以打开库的编译器应用程序通过输入libraryCompiler在MATLAB提示符。

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

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

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

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

    添加addmatrix.mmultiplymatrix.m,eigmatrix.m添加到主文件列表。

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

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

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

      请注意

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

  4. 库名称字段,将打包的共享库重命名为libmatrix.在共享库的实现中始终遵循相同的名称。

自定义应用程序及其外观

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

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

  • 额外的安装选项-生成的安装程序的默认安装路径和自定义logo选择。看到更换安装路径

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

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

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

打包应用程序

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

  1. 点击

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

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

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

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

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

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

使用创建C共享库compiler.build.cSharedLibrary

作为库编译器应用程序的替代方案,您可以使用编程方法创建一个C共享库。如果您已经使用库编译器创建了库,请参见在C应用中实现C共享库

  • 方法构建C共享库compiler.build.cSharedLibrary函数。使用名称-值参数指定库名称并启用详细输出。

    buildResults = compiler.build.cSharedLibrary ([“addmatrix.m”...“eigmatrix.m”“multiplymatrix.m”),...“LibraryName”“libmatrix”...“详细”“上”);

    控件中指定其他选项compiler.build使用名称-值参数命令。有关详细信息,请参见compiler.build.cSharedLibrary

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

    该函数在名为libmatrixcSharedLibrary在您当前的工作目录中:

    • GettingStarted.html-包含集成共享库信息的HTML文件。

    • includedSupportPackages.txt-列出库中包含的所有支持文件的文本文件。

    • libmatrix.cC源代码文件。

    • libmatrix.def—为链接器提供模块信息的模块定义文件。

    • libmatrix.dll-动态链接库文件。

    • libmatrix.exports—导出包含所有非静态函数名的文件。

    • libmatrix.h- C头文件。

    • libmatrix.lib-导入库文件。文件扩展名为. dylibMac所以在UNIX®

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

    • 固定—封装信息的文本文件。

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

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

    请注意

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

在C应用中实现C共享库

打包了C共享库之后,就可以从C应用程序调用它了。C应用程序代码调用共享库中包含的函数。

  1. 定位matrix.c文件位于matlabroot\走读生\ \ compilersdk \ c_cpp \矩阵示例或者你的工作文件夹。

    matrix.c

    将此文件复制并粘贴到包含C共享库的文件夹中libmatrix.lib.如果您使用的是库编译器,则它位于for_testing文件夹中。

    请注意

    . lib扩展是为Windows。在Mac,文件扩展名为. dylib,在UNIX上是这样的所以

  2. 在MATLAB命令提示符下,导航到您复制的文件夹matrix.c

  3. 使用mbuild编译和链接应用程序。

    mbuild matrix.c libmatrix.lib
  4. 从系统命令提示符运行应用程序。

    矩阵与自身的和为:2.00 8.00 14.00 4.00 10.00 16.00 6.00 12.00 18.00矩阵与自身的乘积为:30.00 66.00 102.00 36.00 81.00 126.00 42.00 96.00 150.00原始矩阵的特征值为:16.12 -1.12 -0.00

    请注意

    您可能需要通过运行在UNIX系统上授予应用程序可执行权限

    chmod u + x矩阵

另请参阅

|||

相关的话题

Baidu
map