主要内容

使用 MATLAB 代码创建 C 共享库

支持的平台:Windows®、Linux®Mac

此示例说明如何使用 MATLAB® 函数创建 C 共享库。目标系统不需要 MATLAB 的许可副本。

MATLAB 中创建函数

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

    对于此示例,将 MATLAB 附带的 matrix 文件夹复制到您的工作文件夹。

    copyfile(fullfile(matlabroot,'extern','examples','compilersdk','c_cpp','matrix'),'matrix')

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

  2. 检查并测试函数 addmatrix.mmultiplymatrix.meigmatrix.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
    

使用 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 的文件夹中生成以下文件:

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

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

    • libmatrix.c - C 源代码文件。

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

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

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

    • libmatrix.h - C 头文件。

    • libmatrix.lib - 导入库文件。文件扩展名在 Mac 上为 .dylib,在 Linux 上为 .so

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

    • readme.txt - 包含打包信息的文本文件。

    • requiredMCRProducts.txt - 包含 MATLAB Runtime 运行应用程序所需产品的产品 ID 的文本文件。

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

    注意

    生成的库不包括 MATLAB Runtime 或安装程序。要使用 buildResults 对象创建安装程序,请参阅 compiler.package.installer

在 C 应用程序中实现 C 共享库

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

  1. 找到位于 matlabroot\extern\examples\compilersdk\c_cpp\matrix 或您的工作文件夹中的 matrix.c 文件。

     matrix.c

    将该文件复制并粘贴到包含 C 库文件(在 Windows 上为 libmatrix.lib,在 Mac 上为 libmatrix.dylib,在 Linux 上为 libmatrix.so)的文件夹中。

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

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

    mbuild matrix.c libmatrix.<ext>
  4. 要在 Linux 或 Mac 系统上运行应用程序,必须先将 MATLAB Runtime 添加到库路径。有关详细信息,请参阅针对部署设置 MATLAB Runtime 路径

  5. 从系统命令提示符运行应用程序。在 Windows 上,将正斜杠替换为反斜杠 (\)。

    ./matrix
    The 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

另请参阅

|

主题