主要内容

生成多个入口点功能的代码

入口点功能是顶级MATLAB®您生成代码的功能。对于许多应用程序,您可能只需要为单个入口点函数生成代码。您还可以同时从多个入口点功能生成C/C ++代码。通过使用多个入口点功能,您可以:

  • 与要为每个入口点函数生成独立的库相比,生成包含更大功能级别的多功能C/C ++库。

  • 当多个入口点功能依赖相同的子功能时,生成代码更有效地共享代码。

  • 生成可以使用共享内存进行通信的库函数,例如,当它们使用相同的全局变量时。

作为最佳实践,在生成C/C ++库之前生成MEX函数以验证MATLAB中的入口点交互。

生成多个入口点功能的代码

要为多个入口点函数生成代码,请使用来自代码根参考页。默认情况下,对于MEX代码生成,代码根

  • 在当前文件夹中生成MEX函数。指定多个入口点函数时,仅生成一个MEX函数。要从生成的MEX功能调用单个入口点函数,请参见从MEX函数调用单个入口点功能

  • 命名MEX功能姓名_mex姓名是第一个入口点函数的名称字母顺序命令。

  • 存储在子文件夹中生成的文件Codegen/Mex/子文件夹子文件夹是第一个入口点函数的名称左到右订单(当它们被输入之后代码根命令)。

您可以使用该名称指定输出文件名和子文件夹名称-o选项:

代码根-oMyOutputFileNamefun1fun2

在这种情况下,代码根生成一个名称的MEX功能MyOutputFileName在当前文件夹中,并将生成的文件存储在子文件夹中codegen/mex/myoutputfileName

示例:为两个入口点函数生成代码

为两个入口点函数生成MEX函数,EP1EP2。功能EP1获取一个输入,并EP2采用两个输入。使用-o选项,命名生成的MEX功能共享mex

代码根-omysharedmexEP1-args{单(0)}EP2-args{0,零(1,1024)}

代码根生成一个名称的MEX功能mySharedmex.mex在当前文件夹中,并将生成的文件存储在子文件夹中Codegen/Mex/mySharedMex

要生成和编译独立库代码,请使用-config:lib选项。

代码根-config:lib-omysharedlibEP1-args单(0)EP2-args{0,零(1,1024)}

代码根命令在Codegen/lib/mysharedlib文件夹。

要将来自一个入口点功能的输出类型用作另一个输入类型,请参见将入口点功能输出作为输入传递。有关查看入口点功能在代码生成报告中的信息,请参见代码生成报告

从MEX函数调用单个入口点功能

假设您有MEX功能mymex由多个入口点函数生成fun1,,,,fun2,…,,乐趣。您可以调用单个入口点功能,fun_i,通过使用此语法:

mymex('fun_i',param1,..,paramm)

这里的MATLAB功能签名fun_ifun_i(param1,..,paramm)

例如,考虑MEX功能,mysharedmex,具有入口点功能EP1EP2。打电话EP1带有输入参数, 进入:

mySharedMex('ep1',U)

打电话EP2带有输入参数vX, 进入:

mySharedMex('ep2',v,x)

使用以上的入口点函数生成代码MATLAB编码器应用程序

此示例显示了如何使用该示例为多个入口点函数生成代码MATLAB CODER™应用程序。

创建入口点功能

  1. 在本地写入文件夹中,创建一个matlab文件,EP1.M,其中包含:

    功能y = ep1(u)%#codegeny = u;

  2. 在同一本地写入文件夹中,创建一个matlab文件,ep2.m,其中包含:

    功能y = ep2(u,v)%#codegeny = u + v;

创建测试文件

在包含的文件夹中EP1.Mep2.m,创建一个matlab文件,ep_test.m,电话EP1EP2与示例输入。

功能[y,y1] = ep_test y = ep1(单(2));y1 = ep2(double(3),double(4));

打开MATLAB编码器应用程序

在MATLAB工具条上应用标签,下代码生成, 点击MATLAB编码器应用图标。

指定源文件

  1. 选择源文件页面,输入或选择入口点功能的名称EP1

    该应用程序创建一个带有默认名称的项目EP1.PRJ在当前文件夹中。为避免代码生成错误,您必须将项目文件和所有入口点MATLAB功能文件存储在同一文件夹中。

  2. 加上EP2到入口点功能列表,请单击添加入口点功能。键入或选择入口点功能的名称EP2

  3. 定义输入类型步骤,单击下一个。该应用程序分析编码问题和代码生成准备就绪的功能。如果该应用确定问题,它将打开审查代码生成准备就绪您可以在其中查看和解决问题的页面。在此示例中,由于该应用没有检测到问题,因此它打开了定义输入类型页。

定义输入类型

因为C在编译时使用静态键入,所以MATLAB编码器必须确定MATLAB文件中所有变量的属性。您必须指定所有入口点函数输入的属性。从入口点函数输入的属性,MATLAB编码器可以推断MATLAB文件中所有变量的属性。

指定一个测试文件MATLAB编码器可以自动定义类型:

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

  2. 点击Autodefine输入类型

    测试文件,ep_test.m,调用入口点功能EP1EP2与示例输入类型。MATLAB编码器进一步EP1, 输入单个(1x1)。为了EP2,,,,v双(1x1)

  3. 检查运行时间问题步骤,单击下一个

检查运行时间问题

检查运行时间问题步骤从您的入口点功能中生成MEX文件,运行MEX函数并报告问题。此步骤是可选的。但是,执行此步骤是最好的做法。您可以检测和修复在生成的C代码中难以诊断的运行时错误。

  1. 打开检查运行时间问题对话框,单击检查问题

    该应用程序填充了测试文件字段ep_test,您用来定义输入类型的测试文件。

  2. 点击检查问题

    该应用程序生成一个名称的MEX函数EP1_MEX为了EP1EP2。它运行测试文件ep_test更换电话EP1EP2带有对MEX功能的呼叫。如果该应用在MEX功能生成或执行过程中检测到问题,则提供警告和错误消息。要导航到有问题的代码并解决问题,请单击这些消息。在此示例中,该应用程序未检测到问题。

  3. 生成代码步骤,单击下一个

生成MEX功能

  1. 打开产生对话框,单击产生

  2. 构建类型梅克斯

  3. 验证输出文件名EP1_MEX。默认情况下,该应用使用字母顺序的第一个入口点函数的名称。

  4. 点击产生

    MATLAB编码器建立项目。它生成MEX功能,EP1_MEX,在当前文件夹中。MATLAB编码器还会在子文件夹中生成其他支持文件万博1manbetxcodegen/mex/ep1_mexMATLAB编码器将MATLAB函数的名称用作生成文件的根名称。它为MEX文件创建了特定于平台的扩展名,如命名约定

    您现在可以在MATLAB中测试MEX功能。看从MEX函数调用单个入口点功能

    如果您生成一个静态库EP1EP2,,,,MATLAB编码器构建项目并生成C库,EP1,并支持默认万博1manbetx文件夹中的文件,Codegen/lib/ep1

也可以看看

|

相关话题