Main Content

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

使用 MATLAB Coder App 生成 MEX 函数

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

步骤操作详细信息
1

设置 MATLAB® Coder™ 工程。

设置 MATLAB Coder 工程
2

指定编译配置参数。将 Build type 设置为 “MEX”。

配置工程设置
3

编译工程。

编译 MATLAB Coder 工程

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

使用 MATLAB Coder App 生成 MEX 函数

此示例说明如何使用 MATLAB Coder App 从 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 App

在 MATLAB 工具条的 App 选项卡上,点击 Code Generation 下的 MATLAB Coder App 图标。

该 App 会打开 Select Source Files 页面。

指定源文件

  1. Select Source Files 页面中,键入或选择入口函数 mcadd 的名称。

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

  2. 点击 Next 以转到 Define Input Types 步骤。该 App 将分析函数以查找编码问题并确定代码生成就绪情况。如果 App 发现问题,它将打开 Review Code Generation Readiness 页面,您可以在其中查看和解决问题。在此示例中,由于 App 没有检测到问题,因此将打开 Define Input Types 页面。

定义输入类型

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

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

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

  2. 点击 Autodefine Input Types

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

  3. 点击 Next 以转到 Check for Run-Time Issues 步骤。

检查运行时问题

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

  1. 要打开 Check for Run-Time Issues 对话框,请点击 Check for Issues 箭头

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

  2. 点击 Check for Issues

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

  3. 点击 Next 以转到 Generate Code 步骤。

生成 MEX 函数

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

  2. Generate 对话框中,将 Build type 设置为 “MEX”,将 Language 设置为 C。对其他工程编译配置设置使用默认值。

  3. 点击 Generate

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

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

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

  5. 点击 Next 打开 Finish Workflow 页面。

查看 Finish Workflow 页面

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

配置工程设置

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

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

  2. 点击 More settings

要更改工程设置,请点击包含要更改的设置的选项卡。例如,要更改 Saturate on integer overflow 设置,请点击 Speed 选项卡。

MEX 函数使用一组与库和可执行文件不同的配置参数。将输出类型从 “MEX Function” 更改为 “Source Code ”“Static Library”、“Dynamic Library” 或 “Executable” 时,请验证这些设置。

某些配置参数与 MEX 和独立代码生成相关。如果您在输出类型为 “MEX Function” 时启用这些参数中的任何参数,并且您要在 C/C++ 代码生成中也使用相同的设置,则必须为 “C/C++ Static Library”、“C/C++ Dynamic Library” 和 “C/C++ Executable” 再次启用它。

另请参阅

编译 MATLAB Coder 工程

要使用指定的设置编译工程,请在 Generate Code 页面上点击 Generate。当 MATLAB Coder App 编译工程时,它会显示编译进度。编译完成后,App 会在 Target Build Log 选项卡上提供有关编译的详细信息。

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

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

另请参阅

相关主题