入口点函数是一个顶级的MATLAB®函数,从中生成代码。对于许多应用程序,您可能只需要为单个入口点函数生成代码。您还可以同时从多个入口点函数生成C/ c++代码。通过使用多个入口点函数,您可以:
生成包含比为每个入口点函数生成独立库更高功能级别的多功能C/C++库。
当多个入口点函数依赖于相同的子函数时,生成更有效地共享代码的代码。
生成可以使用共享内存进行通信的库函数,例如,当它们使用相同的全局变量时。
作为最佳实践,在生成C/C++库之前,在MATLAB中生成一个MEX函数来验证入口点交互。
要为多个入口点函数生成代码,请使用codegen
参考页面。默认情况下,对于MEX代码生成,codegen
:
在当前文件夹中生成MEX函数。当指定多个入口点函数时,只生成一个MEX函数。要从生成的MEX函数调用单个入口点函数,请参阅从MEX函数调用单个入口点函数.
命名MEX函数
.的名字
_墨西哥
是来自的第一个入口点函数的名称按字母顺序排列的顺序的名字
将生成的文件存储在子文件夹中codegen/mex/
.子文件夹
子文件夹
a的第一个入口点函数的名称从左到右顺序(因为它们是在codegen
命令)。
属性指定输出文件名和子文件夹名称-o
选项:
codegen-omyOutputFileNamefun1fun2
在这种情况下,codegen
生成一个名为myOutputFileName
在当前文件夹中,并将生成的文件存储在子文件夹中codegen/mex/myOutputFileName
.
为两个入口点函数生成一个MEX函数,ep1
和ep2
.函数ep1
接受一个输入,然后ep2
需要两个输入。使用-o
选项,命名生成的MEX函数sharedmex
:
codegen-omySharedMexep1arg游戏{单个(0)}ep2arg游戏{0, 0 (1024)}
codegen
生成一个名为mySharedMex.mex
在当前文件夹中,并将生成的文件存储在子文件夹中codegen/mex/mySharedMex
.
要生成和编译独立的库代码,请使用-配置:lib
选项
codegen-配置:lib-omySharedLibep1arg游戏单(0)ep2arg游戏{0, 0 (1024)}
的codegen
命令在中生成C/C++库代码codegen / lib / mySharedLib
文件夹中。
要将一个入口点函数的输出类型用作另一个入口点函数的输入类型,请参见将入口点函数输出作为输入传递。有关在代码生成报告中查看入口点函数的信息,请参阅代码生成报告.
假设您有一个MEX函数myMex
由多个入口点函数生成,fun1
,fun2
, …,funN
.你可以调用一个入口点函数,fun_i
,通过使用以下语法:
myMex (“我很开心”,参数1,…,参数m)
这里的MATLAB函数签名为fun_i
是fun_i(参数1,…,参数m)
.
例如,考虑MEX函数,mySharedMex
,它有入口点函数ep1
和ep2
.打电话ep1
使用输入参数u
,输入:
mySharedMex (‘ep1’,u)
打电话给ep2
与输入参数v
和x
,输入:
mySharedMex (“ep2”,v,x)
方法生成多个入口点函数代码MATLAB编码器™应用程序。
创建入口点函数
在本地可写文件夹中,创建一个MATLAB文件,ep1.m
,其中包括:
作用y=ep1(u)% # codegeny = u;
在同一个本地可写文件夹中,创建一个MATLAB文件,ep2.m
,其中包括:
作用y=ep2(u,v)% # codegenY = u + v;
创建测试文件
在包含ep1.m
和ep2.m
,创建一个MATLAB文件,ep_test.m
,这叫ep1
和ep2
使用示例输入。
作用[y, y1] = ep_test y = ep1(single(2));Y1 = ep2(double(3), double(4)));
打开MATLAB编码员应用程序
基于MATLAB的工具条应用程序选项卡,在代码生成,单击MATLAB编码器应用程序图标。
指定源文件
在选择源文件页面、键入或选择入口点函数的名称ep1
.
应用程序创建一个默认名称的项目ep1.prj
在当前文件夹中。为避免代码生成错误,必须将项目文件和所有入口点MATLAB函数文件存储在同一文件夹中。
添加ep2
到入口点函数列表,单击添加入口点函数.键入或选择入口点函数的名称ep2
.
去定义输入类型步骤,单击下一个.该应用程序分析功能的编码问题和代码生成准备。如果应用程序发现问题,它会打开检查代码生成准备情况您可以在其中查看和修复问题的页面。在本例中,由于应用程序未检测到问题,因此会打开定义输入类型页
定义输入类型
因为C在编译时使用静态类型,MATLAB编码器必须确定MATLAB文件中所有变量的属性。必须指定所有入口点函数输入的属性。从入口点函数输入的属性,MATLAB编码器可以推断MATLAB文件中所有变量的属性。
指定一个测试文件MATLAB编码器可用于自动定义类型:
输入或选择测试文件ep_test.m
.
点击自动定义输入类型.
测试文件,ep_test.m
,调用入口点函数ep1
和ep2
使用示例输入类型。MATLAB编码器推断,ep1
输入u
是单(1 x1)
. 对于ep2
,u
和v
是双(1x1)
.
去检查运行时问题步骤,单击下一个.
检查运行时问题
的检查运行时问题步骤从入口点函数生成MEX文件,运行MEX函数,并报告问题。此步骤为可选步骤。但是,执行此步骤是最佳实践。您可以检测和修复生成的C代码中较难诊断的运行时错误。
打开检查运行时问题对话框中,单击检查问题箭.
应用程序填充测试文件字段ep_test
,用于定义输入类型的测试文件。
点击检查问题.
该应用程序生成一个名为ep1_mex
为ep1
和ep2
.它运行测试文件ep_test
替换对的呼叫ep1
和ep2
调用MEX函数。如果应用程序在MEX函数生成或执行期间检测到问题,它会提供警告和错误消息。要导航到有问题的代码并修复问题,请单击这些消息。在这个例子中,应用程序不会检测到问题。
去生成代码步骤,单击下一个.
生成MEX函数
打开生成对话框中,单击生成箭.
集构建类型来墨西哥
.
验证输出文件的名字是ep1_mex
. 默认情况下,应用程序使用按字母顺序排列的第一个入口点函数的名称。
点击生成.
MATLAB编码器构建项目。它生成一个MEX函数,ep1_mex
,在当前文件夹中。MATLAB编码器还将在名为的子文件夹中生成其他支持文件金宝appcodegen /墨西哥人/ ep1_mex
.MATLAB编码器使用MATLAB函数的名称作为生成文件的根名称。它为MEX文件创建特定于平台的扩展名,如中所述命名约定.
现在可以在MATLAB中测试MEX函数。看到从MEX函数调用单个入口点函数.
如果您为ep1
和ep2
,MATLAB编码器构建项目并生成一个C库,ep1
,以及默认文金宝app件夹中的支持文件,codegen/lib/ep1
.