为多个入口点函数生成代码
入口点函数是顶级的MATLAB®函数,从中生成代码。对于许多应用程序,您可能只需要为单个入口点函数生成代码。您还可以从多个入口点函数同时生成C/ c++代码。通过使用多个入口点函数,您可以:
生成包含更大层次功能的多功能C/ c++库,而不是为每个入口点函数生成独立的库。
当多个入口点函数依赖于相同的子函数时,生成更有效地共享代码的代码。
生成可以使用共享内存进行通信的库函数,例如,当它们使用相同的全局变量时。
作为最佳实践,在生成C/ c++库之前,生成MEX函数来验证MATLAB中的入口点交互。
为多个入口点函数生成代码
方法中的语法可为多个入口点函数生成代码codegen
参考页面。缺省情况下,对于MEX代码生成,codegen
:
在当前文件夹中生成MEX函数。当指定多个入口点函数时,只生成一个MEX函数。要从生成的MEX函数调用单个入口点函数,请参见从MEX函数调用单个入口点函数.
为MEX函数命名
.的名字
_mex
的第一个入口点函数的名称是字母顺序排列秩序。的名字
将生成的文件存储在子文件夹中
codegen /墨西哥人/
.子文件夹
子文件夹
a的第一个入口点函数的名称是从左到右顺序(因为它们在codegen
命令)。
方法指定输出文件名和子文件夹名- o
选择:
codegen- omyOutputFileNamefun1fun2
在这种情况下,codegen
生成一个MEX函数myOutputFileName
在当前文件夹中,并将生成的文件存储在子文件夹中codegen /墨西哥人/ myOutputFileName
.
示例:为两个入口点函数生成代码
为两个入口点函数生成MEX函数,ep1
而且ep2
.函数ep1
取一个输入ep2
需要两个输入。使用- o
选项,为生成的MEX函数命名sharedmex
:
codegen- omySharedMexep1arg游戏{单(0)}ep2arg游戏{0, 0 (1024)}
codegen
生成一个MEX函数mySharedMex.mex
在当前文件夹中,并将生成的文件存储在子文件夹中codegen /墨西哥人/ mySharedMex
.
要生成和编译独立库代码,请使用配置:自由
选择。
codegen配置:自由- omySharedLibep1arg游戏单(0)ep2arg游戏{0, 0 (1024)}
的codegen
命令生成C/ c++库代码codegen / lib / mySharedLib
文件夹中。
若要使用一个入口点函数的输出类型作为另一个入口点函数的输入类型,请参见传递一个入口点函数输出作为输入.有关在代码生成报告中查看入口点函数的信息,请参见代码生成报告.
从MEX函数调用单个入口点函数
假设您有一个MEX函数myMex
由多个入口点函数生成,fun1
,fun2
、……funN
.你可以调用一个入口点函数,fun_i
,通过使用以下语法:
myMex (“fun_i”param1, paramM . .)
这里用MATLAB函数进行签名fun_i
是paramM fun_i (param1 . .)
.
例如,考虑MEX函数,mySharedMex
,它具有入口点函数ep1
而且ep2
.打电话给ep1
有一个输入参数u
,输入:
mySharedMex (“ep1”, u)
打电话给ep2
与输入参数v
而且x
,输入:
mySharedMex (“ep2”、v、x)
为多个入口点函数生成代码MATLAB编码器应用程序
方法为多个入口点函数生成代码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
.点击Autodefine输入类型.
测试文件,
ep_test.m
,调用入口点函数ep1
而且ep2
使用示例输入类型。MATLAB编码器推断,ep1
、输入u
是单(1 x1)
.为ep2
,u
而且v
是双(1 x1)
.去检查运行时问题一步,单击下一个.
检查运行时问题
的检查运行时问题step从入口点函数生成MEX文件,运行MEX函数并报告问题。此步骤是可选的。但是,执行此步骤是最佳实践。您可以在生成的C代码中检测和修复难以诊断的运行时错误。
打开检查运行时问题对话框中,单击检查问题箭头.
应用程序将测试文件字段填充为
ep_test
,您用来定义输入类型的测试文件。点击检查问题.
该应用程序生成一个名为
ep1_mex
为ep1
而且ep2
.它运行测试文件ep_test
更换要求ep1
而且ep2
调用MEX函数。如果应用程序在MEX函数生成或执行期间检测到问题,它将提供警告和错误消息。要导航到有问题的代码并修复问题,请单击这些消息。在本例中,应用程序不会检测到问题。去生成代码一步,单击下一个.
生成墨西哥人的功能
打开生成对话框中,单击生成箭头.
集构建类型来
墨西哥人
.验证输出文件的名字是
ep1_mex
.默认情况下,应用程序使用字母顺序第一个的入口点函数的名称。点击生成.
MATLAB编码器构建项目。它生成一个MEX函数,
ep1_mex
,在当前文件夹中。MATLAB编码器还在子文件夹中生成其他支持文件codegen /墨西哥人/ ep1_mex
.MATLAB编码器使用MATLAB函数的名称作为生成文件的根名称。它为MEX文件创建一个特定于平台的扩展,如命名约定.现在您可以在MATLAB中测试MEX函数。看到从MEX函数调用单个入口点函数.
如果为。生成静态库
ep1
而且ep2
,MATLAB编码器构建项目并生成C库,ep1
,以及默认文件夹中的支持文件,codegen / lib / ep1
.