使用 MATLAB 代码创建 C 共享库
支持的平台:Windows®、Linux®、Mac
此示例说明如何使用 MATLAB® 函数创建 C 共享库。目标系统不需要 MATLAB 的许可副本。
在 MATLAB 中创建函数
在 MATLAB 中,检查您想要打包的 MATLAB 代码。
对于此示例,将 MATLAB 附带的
matrix文件夹复制到您的工作文件夹。copyfile(fullfile(matlabroot,'extern','examples','compilersdk','c_cpp','matrix'),'matrix')
导航到工作文件夹中的新
matrix子文件夹。检查并测试函数
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
使用 compiler.build.cSharedLibrary 创建 C 共享库
使用
compiler.build.cSharedLibrary函数编译 C 共享库。使用名称-值参量指定库名称并启用详尽输出。buildResults = compiler.build.cSharedLibrary(["addmatrix.m", ... "eigmatrix.m","multiplymatrix.m"], ... 'LibraryName','libmatrix', ... 'Verbose','on');
您可以使用名称-值参量在
compiler.build命令中指定其他选项。有关详细信息,请参阅compiler.build.cSharedLibrary。compiler.build.Results对象buildResults包含有关编译类型、生成的文件、包含的支持包和编译选项的信息。该构建函数会在当前工作目录下的一个名为
libmatrixcSharedLibrary的文件夹中生成文件。有关生成的文件的信息,请参阅 打包 MATLAB 函数后生成的文件。注意
生成的库不包括 MATLAB Runtime 或安装程序。要使用
buildResults对象创建安装程序,请参阅compiler.package.installer。
在 C 应用程序中实现 C 共享库
打包 C 共享库后,您可以从 C 应用程序调用它。可以使用 C 应用程序代码调用共享库中包含的函数。
找到位于
matlabroot\extern\examples\compilersdk\c_cpp\matrix或您的工作文件夹中的matrix.c文件。将该文件复制并粘贴到包含 C 库文件(在 Windows 上为
libmatrix.lib,在 Mac 上为libmatrix.dylib,在 Linux 上为libmatrix.so)的文件夹中。在 MATLAB 命令提示符下,导航到您复制
matrix.c的文件夹。使用
mbuild编译并链接应用程序。mbuild matrix.c libmatrix.<ext>
要在 Linux 或 Mac 系统上运行应用程序,必须先将 MATLAB Runtime 添加到库路径。有关详细信息,请参阅为部署设置 MATLAB Runtime 库路径。
从系统命令提示符运行应用程序。在 Windows 上,将正斜杠替换为反斜杠 (
\)。./matrixThe sum of the matrix with itself is: 2.00 8.00 14.00 4.00 10.00 16.00 6.00 12.00 18.00 The product of the matrix with itself is: 30.00 66.00 102.00 36.00 81.00 126.00 42.00 96.00 150.00 The eigenvalues of the original matrix are: 16.12 -1.12 -0.00
注意
您可能需要在 Linux 或 Mac 系统上为应用程序授予可执行权限。
chmod u+x matrix
另请参阅
compiler.build.cSharedLibrary | mxArray (C)
