Main Content

使用 MATLAB Coder 生成 MEX 函数

使用 MATLAB Coder 生成 MEX 函数的工作流

步骤操作详细信息
1

设置 MATLAB® Coder™ 工程。

设置 MATLAB Coder 工程
2

指定编译配置参数。将编译类型设置为 MEX

配置工程设置
3

编译工程。

编译 MATLAB Coder 工程

MATLAB Online™ 不支持 MATLAB Coder。要在 MATLAB Online 中生成 MEX 函数,请使用 codegen 命令。

使用 MATLAB Coder 生成 MEX 函数

此示例说明如何使用 MATLAB Coder 从 MATLAB 代码生成 MEX 函数。

创建入口函数

在一个本地可写文件夹中,创建 MATLAB 文件 mcadd.m,其中包含:

function y = mcadd(u,v) %#codegen
y = u + v;

创建测试文件

在同一本地可写文件夹中,创建 MATLAB 文件 mcadd_test.m,该文件调用具有示例输入的 mcadd。示例输入是类型为 int16 的标量。

function y = mcadd_test
y = mcadd(int16(2), int16(3));

打开 MATLAB Coder

在 MATLAB 工具条的 App 选项卡上,点击代码生成下的 MATLAB Coder 图标。

该 App 会打开选择源文件页面。

指定源文件

  1. 选择源文件页面中,键入或选择入口函数 mcadd 的名称。

    该 App 将使用默认名称 mcadd.prj 创建一个工程。

  2. 点击下一步以转到定义输入类型步骤。该 App 将分析函数以查找编码问题并确定代码生成就绪情况。如果 App 发现问题,它将打开检查代码就绪性页面,您可以在其中查看和解决问题。在此示例中,由于 App 没有检测到问题,因此将打开定义输入类型页面。

定义输入类型

由于 C 使用静态定型,MATLAB Coder 必须在编译时确定 MATLAB 文件中所有变量的属性。您必须指定所有入口函数输入的属性。根据入口函数输入的属性,MATLAB Coder 可以推断 MATLAB 文件中所有变量的属性。

指定 MATLAB Coder 用来自动定义 uv 的类型的测试文件 mcadd_test.m

  1. 输入或选择测试文件 mcadd_test.m

  2. 点击自动定义输入类型

    测试文件 mcadd_test.m 使用示例输入类型调用入口函数 mcaddMATLAB Coder 推断输入 uvint16(1x1)

  3. 点击下一步以转到检查运行时问题步骤。

检查运行时问题

检查运行时问题步骤从您的入口函数生成 MEX 文件,然后运行 MEX 函数并报告问题。此步骤是可选的。不过,建议最好执行此步骤。您可以检测并解决在生成的 C 代码中更难诊断出来的运行时错误。

  1. 要打开检查运行时问题对话框,请点击检查问题箭头

    App 使用 mcadd_test 填充测试文件字段,该测试文件用于定义输入类型。

  2. 点击检查问题

    App 将生成一个 MEX 函数。它运行测试文件,将对 mcadd 的调用替换为对 MEX 函数的调用。如果 App 在 MEX 函数生成或执行过程中检测到问题,它将提供警告和错误消息。您可以点击这些消息,导航到有问题的代码并修复问题。在本示例中,App 未检测到问题。

  3. 点击下一步以转到生成代码步骤。

生成 MEX 函数

  1. 要打开生成对话框,请点击生成箭头

  2. 生成对话框中,将编译类型设置为 MEX,将语言设置为 C。对其他工程编译配置设置使用默认值。

  3. 点击生成

    App 指示代码生成成功。它在页面左侧显示源 MATLAB 文件和生成的输出文件。在变量选项卡上,它显示有关 MATLAB 源变量的信息。在目标编译日志选项卡上,它会显示编译日志,包括编译器警告和错误。

    MATLAB Coder 编译工程,并默认在当前文件夹中生成 MEX 函数 mcadd_mexMATLAB Coder 还会在名为 codegen/mex/mcadd 的子文件夹中生成其他支持文件。MATLAB Coder 使用 MATLAB 函数的名称作为生成文件的根名称。它为 MEX 文件创建一个特定于平台的扩展名。请参阅Naming Conventions

  4. 要查看代码生成报告,请点击查看报告

  5. 点击下一步打开完成工作流页面。

查看“完成工作流”页面

完成工作流页面指示已成功生成代码,还提供工程摘要以及指向生成的输出的链接。

配置工程设置

要打开工程设置对话框,请执行下列操作:

  1. 要打开生成对话框,请点击生成箭头

  2. 点击更多设置

要更改工程设置,请点击包含要更改的设置的选项卡。例如,要更改对整数溢出进行饱和处理设置,请点击速度选项卡。

MEX 函数使用一组与库和可执行文件不同的配置参数。将输出类型从 MEX 函数更改为源代码静态库动态库可执行文件时,请验证这些设置。

某些配置参数与 MEX 和独立代码生成相关。如果您在输出类型为 MEX 函数时启用这些参数中的任何参数,并且您要在 C/C++ 代码生成中也使用相同的设置,则必须为 C/C++ 静态库C/C++ 动态库C/C++ 可执行文件再次启用它。

另请参阅

编译 MATLAB Coder 工程

要使用指定的设置编译工程,请在生成代码页面上点击生成。当 MATLAB Coder 编译工程时,它会显示编译进度。编译完成后,App 会在目标编译日志选项卡上提供有关编译的详细信息。

如果启用了代码生成报告或发生编译错误,则 App 会生成报告。该报告提供有关最近编译的详细信息,并提供指向该报告的链接。

要查看报告,请点击查看报告链接。该报告提供指向 MATLAB 代码和生成的 C/C++ 文件的链接,并提供 MATLAB 代码中变量的编译时类型信息。如果发生编译错误,报告将列出错误和警告。

另请参阅

相关主题