创建一个C共享库MATLAB代码
支持平台:窗户®, Linux®,Mac
这个例子展示了如何使用MATLAB创建一个C共享库®函数。目标系统不需要MATLAB的授权副本。
创建函数MATLAB
在MATLAB中,检查您想打包的MATLAB代码。
对于本例,复制
矩阵
随MATLAB附带到你的工作文件夹的文件夹。拷贝文件(fullfile (matlabroot,“外来的”,“例子”,“compilersdk”,“c_cpp”,“矩阵”),“矩阵”)
导航到新的
矩阵
工作文件夹中的子文件夹。检查和测试功能
addmatrix.m
,multiplymatrix.m
,eigmatrix.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
在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
在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共享库.
在MATLAB应用程序标签,在最右边的应用程序部分,单击箭头。在应用程序部署,点击库的编译器.在MATLAB编译器项目窗口中,单击C共享库.
或者,您可以打开库的编译器应用程序通过输入
libraryCompiler
在MATLAB提示符。在库的编译器app项目窗口,指定要部署的MATLAB应用程序的文件。
在导出功能部分,单击.
在添加文件窗口,浏览到示例文件夹,并选择要打包的函数。点击开放.
该函数被添加到导出的函数文件列表中。重复此步骤,将多个文件打包到同一个应用程序中。
添加
addmatrix.m
,multiplymatrix.m
,eigmatrix.m
添加到主文件列表。在包装选项部分时,决定是否包含MATLAB运行时安装程序在生成的应用程序中选择其中一个选项:
从web下载运行时-生成一个安装程序,用于下载MATLAB运行时并将其与已部署的MATLAB应用程序一起安装。您可以指定安装程序的文件名。
包中包含的运行时—生成包含MATLAB运行时安装程序。您可以指定安装程序的文件名。
请注意
第一次选择此选项时,系统会提示您下载MATLAB运行时安装程序。
在库名称字段,将打包的共享库重命名为
libmatrix
.在共享库的实现中始终遵循相同的名称。
自定义应用程序及其外观
在库的编译器应用程序,您可以自定义安装程序,自定义您的应用程序,并添加关于应用程序的更多信息。
图书馆信息—已部署的应用信息。您还可以通过更改应用程序图标和启动画面来定制应用程序的外观。生成的安装程序使用此信息填充已安装的应用程序元数据。看到自定义安装程序.
额外的安装选项-生成的安装程序的默认安装路径和自定义logo选择。看到更换安装路径.
运行库所需的文件-生成的应用程序运行所需的附加文件。这些文件包含在生成的应用程序安装程序中。看到在编译器项目中管理所需文件.
为最终用户安装的文件-与应用程序一起安装的文件。
打包应用程序
当您完成选择打包选项时,保存您的库的编译器投影并生成打包的应用程序。
点击包.
在“保存项目”对话框中,指定保存项目的位置。
在包对话框,验证一下当进程完成时打开输出文件夹被选中。
打包过程完成后,检查目标文件夹中生成的输出。
生成三个文件夹:
for_redistribution
,for_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.c
C源代码文件。libmatrix.def
—为链接器提供模块信息的模块定义文件。libmatrix.dll
-动态链接库文件。libmatrix.exports
—导出包含所有非静态函数名的文件。libmatrix.h
- C头文件。libmatrix.lib
-导入库文件。文件扩展名为. dylib
在Mac和所以
在UNIX®.mccExcludedFiles.log
-包含应用程序中未包含的任何工具箱功能列表的日志文件。有关不支持的函数的信息,请参见MATLAB编译器限制.固定
—封装信息的文本文件。requiredMCR2022世界杯八强谁会赢?Products.txt
—包含所需产品的产品id的文本文件2022世界杯八强谁会赢?MATLAB运行时运行应用程序。unresolvedSymbols.txt
-包含未解析符号信息的文本文件。
请注意
生成的库不包括MATLAB运行时或一个安装程序。方法创建安装程序
buildResults
对象,看到compiler.package.installer
.
在C应用中实现C共享库
打包了C共享库之后,就可以从C应用程序调用它了。C应用程序代码调用共享库中包含的函数。
定位
matrix.c
文件位于matlabroot\走读生\ \ compilersdk \ c_cpp \矩阵示例
或者你的工作文件夹。将此文件复制并粘贴到包含C共享库的文件夹中
libmatrix.lib
.如果您使用的是库编译器,则它位于for_testing
文件夹中。请注意
的
. lib
扩展是为Windows。在Mac,文件扩展名为. dylib
,在UNIX上是这样的所以
.在MATLAB命令提示符下,导航到您复制的文件夹
matrix.c
.使用
mbuild
编译和链接应用程序。mbuild matrix.c libmatrix.lib
从系统命令提示符运行应用程序。
矩阵与自身的和为: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矩阵
另请参阅
libraryCompiler
|compiler.build.cSharedLibrary
|deploytool
|mxArray (C)