主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

从强类型 MATLAB 函数创建 C++ MATLAB Data API 共享库标头

此示例说明如何从强类型 MATLAB® 函数创建 C++ MATLAB Data API 共享库头并将其与示例 C++ 应用程序代码集成。目标系统不需要 MATLAB 的许可副本即可运行该应用程序。

前提条件

  • 通过创建一个 MATLAB 搜索路径可见的新工作文件夹来开始此示例。

  • 通过在 MATLAB 命令提示符下键入 mbuild -setup 来验证您是否已安装 C++ 编译器。

  • 最终用户必须安装 MATLAB Runtime 才能运行应用程序。有关详细信息,请参阅下载并安装 MATLAB Runtime

    出于测试目的,您可以使用安装的 MATLAB 来代替 MATLAB Runtime

MATLAB 中创建函数

使用以下代码创建一个名为 stronglyTypedFactorial.m 的 MATLAB 文件:

function fact = stronglyTypedFactorial(n)
arguments
    n (1,1) uint64 {mustBeReal, mustBeLessThan(n,22)}
end
fact = 1;
for i = 1:n
    fact = fact*i;
end
end

在 MATLAB 命令提示符下测试该函数。

stronglyTypedFactorial(5)
ans =
  uint64
   120

使用 mcc 命令生成 C++ 共享库头文件

使用 mcc 命令生成 C++ 共享库头。在命令提示符下,键入:

if ~exist('output/cpp','dir')
    mkdir output/cpp
end
mcc -W 'cpplib:stronglyTypedFactorial,generic' stronglyTypedFactorial.m -d output/cpp
v2 > generic_interface 文件夹中创建以下文件:

  • readme.txt

  • stronglyTypedFactorial.ctf

  • stronglyTypedFactorialv2.hpp

stronglyTypedFactorialv2.hpp 头文件包含一个接受 uint64_t 类型参量的 C++ 数据数组。

matlab::data::Array stronglyTypedFactorial(std::shared_ptr<MATLABControllerType> _matlabPtr, uint64_t n)

uint64_t 映射与 MATLAB 参量的强类型 uint64 数据类型匹配。

n (1,1) uint64 {mustBeReal, mustBeLessThan(n,22)}

有关详细信息,请参阅C++ 和强类型 MATLAB 代码之间的数据类型映射

 stronglyTypedFactorialv2.hpp

将 C++ MATLAB Data API 共享库头文件与 C++ 应用程序集成

使用以下代码创建一个名为 factApp.cpp 的 C++ 应用程序代码文件。

 factApp.cpp

注意

在编写 C++ 应用程序代码时,必须包含由 mcc 命令或 C++ 共享库编译器应用程序生成的头文件(.hpp 文件),以及使用 #include 指令包含的 MatlabCppSharedLib.hpp 头文件。

在 MATLAB 命令提示符下编译并链接 C++ 应用程序。

mbuild factApp.cpp -outdir output/cpp

通过将可部署存档(.ctf 文件)作为输入,从系统命令提示符运行该应用程序。为了测试目的,您可以从 MATLAB 命令提示符运行该应用程序。

!output\cpp\factApp.exe output\cpp\v2\generic_interface\stronglyTypedFactorial.ctf
Factorial of 5 is 120

另请参阅

|

主题