Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

构建 MATLAB 的 C++ 库接口

要创建 MATLAB® 的 C++ 库接口,请使用 clibgen

要构建(发布)MATLAB 的 C++ 库接口,您需要:

  • 一个或多个头文件或源文件,包含由库导出的所有函数的声明。您应该能够在 C++ 开发环境中编译这些文件,并在 C++ 应用程序中使用该功能。

  • 一个共享库文件 - Windows® 上的 .dll、Linux® 上的 .somacOS 上的 .dylib。如果已在头文件或源文件中完整定义了库,则库文件不是必须的。

    MATLAB 不支持 32 位库。

  • 在 Windows 上 - 导入库 .lib 文件。如果该库是使用受支持的 Microsoft® Visual Studio® 编译器编译的,则您只需要共享库 .dll 文件。

  • 一个 MATLAB 支持的 C++ 编译器。

MATLAB 接口自动将 C++ 函数签名转换为 MATLAB 函数签名。但是,一些 C++ 语言构造在 MATLAB 语言中没有唯一的匹配项。为了弥补此差距,MATLAB 使用库定义文件(文件扩展名为 .mlx),发布者可以创建并修改该文件来提供缺失信息。发布者必须有足够的 C++ 语言技能来解释函数签名并提供缺失信息。

例如,发布者需要定义的信息包括使用指针将数据传递给函数。指针是内存中指示数据块开始的位置。要将此数据安全地传递给 MATLAB,发布者必须指定数据的大小。一般情况下,函数文档可能会使用额外的输入参数来指示数据的大小。发布者使用 MATLAB 定义文件来指定该值,然后,MATLAB 会创建等效的 MATLAB 函数签名。要显示函数签名,请参阅Display Help for MATLAB Interface to C++ Library

要使该接口对其他 MATLAB 用户可用,请向他们提供 MATLAB 接口文件。最终用户将共享库文件放在系统路径或运行时路径上,并将接口文件放在 MATLAB 路径上。

示例:

有关调用库中函数的信息,请参阅使用预置的 MATLAB C++ 库接口

函数

clibgen.generateLibraryDefinition为 C++ 库创建定义文件
clibgen.buildInterface在没有定义文件的情况下创建 C++ 库的接口

clibgen 包支持从 MATLAB 调用 C++ 库功能的包和类的汇总

主题

Requirements for Building Interface to C++ Libraries

Requirements for calling functions in external, shared C++ libraries from MATLAB.

Steps to Publish a MATLAB Interface to a C++ Library

Outline for publishing an interface to a C++ library.

Define MATLAB Interface for C++ Library

Generate and edit the MATLAB MLX library definition file to customize and define the interface.

Publish Help Text for MATLAB Interface to C++ Library

Provide documentation for end-users of a MATLAB interface to a C++ Library.

Build C++ Library Interface and Review Contents

If library functionality is missing, the library might contain unsupported language features or data types.

Header and CPP Source Files

This example creates a MATLAB interface to a C++ library defined in source files matrixOperations.hpp and matrixOperations.cpp.

Header File and Import Library File on Windows

This example creates a MATLAB interface to a C++ library with an import library file matrixOperations.lib.

Header File and Shared Object File on Linux

This example creates a MATLAB interface to a C++ library with a shared object file libmwmatrixOperations.so.

Header-Only HPP File

This example creates a MATLAB interface to a C++ library defined in a header file school.hpp.

疑难解答

Limitations to C/C++ Support

C/C++ library features not supported in MATLAB.

C++ Limitation Workaround Examples

Example code to work around C++ library limitations.

Troubleshooting C++ Library Definition Issues

Information for resolving error when publishing a MATLAB interface to a C++ library.

Errors Parsing Header Files on macOS

Work around for errors parsing header file on macOS.

Build Error Due to Compile-Time Checks

How to remove C++ members containing compile-time assertions.