为多个入口点函数生成代码
入口点函数是顶级的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
生成一个名为myOutputFileName
在当前文件夹中,并将生成的文件存储在子文件夹中codegen /墨西哥人/ myOutputFileName
.
示例:为两个入口点函数生成代码
为两个入口点函数生成MEX函数,ep1
而且ep2
.函数ep1
取一个输入ep2
需要两个输入。使用- o
选项,命名生成的MEX函数sharedmex
:
codegen- omySharedMexep1arg游戏{单(0)}ep2arg游戏{0, 0 (1024)}
codegen
生成一个名为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
.点击自动定义输入类型.
测试文件,
ep_test.m
,调用入口点函数ep1
而且ep2
使用示例输入类型。MATLAB编码器推断为ep1
、输入u
是单(1 x1)
.为ep2
,u
而且v
是双(1 x1)
.去检查运行时问题一步,单击下一个.
检查运行时问题
的检查运行时问题步骤从入口点函数生成一个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
.