coder.cevalgydF4y2Ba
调用外部C/ c++函数gydF4y2Ba
语法gydF4y2Ba
描述gydF4y2Ba
coder.ceval (gydF4y2Ba
执行指定的外部C/ c++函数gydF4y2Bacfun_namegydF4y2Ba
)gydF4y2Bacfun_namegydF4y2Ba
.定义gydF4y2Bacfun_namegydF4y2Ba
在外部C/ c++源文件或库中。向代码生成器提供外部源文件、库文件和头文件。gydF4y2Ba
coder.ceval (gydF4y2Ba
执行gydF4y2Bacfun_namegydF4y2Ba
,gydF4y2Bacfun_argumentsgydF4y2Ba
)gydF4y2Bacfun_namegydF4y2Ba
使用参数gydF4y2Bacfun_argumentsgydF4y2Ba
.gydF4y2Bacfun_argumentsgydF4y2Ba
输入参数列表是否以逗号分隔gydF4y2Bacfun_namegydF4y2Ba
需要。gydF4y2Ba
默认情况下,gydF4y2Bacoder.cevalgydF4y2Ba
当C/ c++支持按值传递参数时,将参数按值传递给C/ c++函数。金宝app为了使gydF4y2Bacoder.cevalgydF4y2Ba
通过引用传递参数,使用构造gydF4y2Bacoder.refgydF4y2Ba
,gydF4y2Bacoder.rrefgydF4y2Ba
,gydF4y2Bacoder.wrefgydF4y2Ba
.如果C/ c++不支持按值传递参数,金宝app例如,如果参数是一个数组,gydF4y2Bacoder.cevalgydF4y2Ba
通过引用传递参数。如果你不使用gydF4y2Bacoder.refgydF4y2Ba
,gydF4y2Bacoder.rrefgydF4y2Ba
或gydF4y2Bacoder.wrefgydF4y2Ba
,参数的副本可以出现在生成的代码中,以加强MATLABgydF4y2Ba®gydF4y2Ba数组的语义。gydF4y2Ba
coder.ceval (gydF4y2Ba
执行gydF4y2Ba“全球”gydF4y2Ba
,gydF4y2Bacfun_namegydF4y2Ba
)gydF4y2Bacfun_namegydF4y2Ba
并表明gydF4y2Bacfun_namegydF4y2Ba
使用一个或多个MATLAB全局变量。然后,代码生成器可以生成与该全局变量用法一致的代码。gydF4y2Ba
请注意gydF4y2Ba
的gydF4y2Ba全球gydF4y2Ba
标志只支持代码生成。金宝app调用时不能包含此标志gydF4y2Bacoder.cevalgydF4y2Ba
在MATLAB函数块。gydF4y2Ba
coder.ceval (gydF4y2Ba
执行gydF4y2Ba“全球”gydF4y2Ba
,gydF4y2Bacfun_namegydF4y2Ba
,gydF4y2Bacfun_argumentsgydF4y2Ba
)gydF4y2Bacfun_namegydF4y2Ba
使用参数gydF4y2Bacfun_argumentsgydF4y2Ba
并表明gydF4y2Bacfun_namegydF4y2Ba
使用一个或多个MATLAB全局变量。gydF4y2Ba
coder.ceval (gydF4y2Ba
允许您呼叫CUDAgydF4y2Ba®gydF4y2BaGPUgydF4y2Ba“-gpudevicefcn”gydF4y2Ba
、devicefun_name devicefun_arguments)gydF4y2Ba__device__gydF4y2Ba
内核中的函数。gydF4y2Ba“-gpudevicefcn”gydF4y2Ba
指示gydF4y2Bacoder.cevalgydF4y2Ba
目标函数在GPU设备上。gydF4y2Badevicefun_namegydF4y2Ba
是名字吗gydF4y2Ba__device__gydF4y2Ba
功能和gydF4y2Badevicefun_argumentsgydF4y2Ba
输入参数列表是否以逗号分隔gydF4y2Badevicefun_namegydF4y2Ba
需要。此选项需要GPU Coder™产品。gydF4y2Ba
coder.ceval (gydF4y2Ba
执行gydF4y2Ba“布局:rowMajor”gydF4y2Ba
,gydF4y2Bacfun_namegydF4y2Ba
,gydF4y2Bacfun_argumentsgydF4y2Ba
)gydF4y2Bacfun_namegydF4y2Ba
使用参数gydF4y2Bacfun_argumentsgydF4y2Ba
并传递以行为主布局存储的数据。当从使用列大调布局的函数调用时,代码生成器将输入转换为行大调布局,并将输出转换回列大调布局。为了简化语法,请使用gydF4y2Bacoder.ceval(‘行’,…)gydF4y2Ba
.gydF4y2Ba
coder.ceval (gydF4y2Ba
执行gydF4y2Ba“布局:columnMajor”gydF4y2Ba
,gydF4y2Bacfun_namegydF4y2Ba
,gydF4y2Bacfun_argumentsgydF4y2Ba
)gydF4y2Bacfun_namegydF4y2Ba
使用参数gydF4y2Bacfun_argumentsgydF4y2Ba
并传递存储在列主布局中的数据。当从使用行大宽布局的函数调用时,代码生成器将输入转换为列大宽布局,并将输出转换回行大宽布局。为了简化语法,请使用gydF4y2Bacoder.ceval(坳,…)gydF4y2Ba
.gydF4y2Ba
coder.ceval (gydF4y2Ba
执行gydF4y2Ba布局:任何的gydF4y2Ba
,gydF4y2Bacfun_namegydF4y2Ba
,gydF4y2Bacfun_argumentsgydF4y2Ba
)gydF4y2Bacfun_namegydF4y2Ba
使用参数gydF4y2Bacfun_argumentsgydF4y2Ba
并使用其当前数组布局传递数据,即使数组布局不匹配。代码生成器不转换输入或输出数据的数组布局。gydF4y2Ba
Cfun_return = code .ceval(gydF4y2Ba___gydF4y2Ba)gydF4y2Ba
执行gydF4y2Bacfun_namegydF4y2Ba
并返回单个标量值,gydF4y2Bacfun_returngydF4y2Ba
类中C/ c++函数返回的值gydF4y2Ba返回gydF4y2Ba
声明。为了与C/ c++保持一致,gydF4y2Bacoder.cevalgydF4y2Ba
只能返回标量值。它不能返回数组。将此选项用于前面语法中的任何输入参数组合。gydF4y2Ba
例子gydF4y2Ba
输入参数gydF4y2Ba
限制gydF4y2Ba
你不能使用gydF4y2Ba
coder.cevalgydF4y2Ba
你在外部声明的函数gydF4y2Bacoder.extrinsicgydF4y2Ba
.gydF4y2Ba当LCC编译器创建一个库时,它会在库函数名后添加一个前导下划线。如果库的编译器是LCC,而您的代码生成编译器不是LCC,则必须在函数名后添加前导下划线,例如:gydF4y2Ba
coder.ceval(“_mylibfun”)gydF4y2Ba
.如果库的编译器不是LCC,则不能使用LCC从调用该库函数的MATLAB代码生成代码。这些库函数名没有LCC编译器要求的前导下划线。gydF4y2Ba如果属性具有get方法、set方法或验证器,或者是具有某些属性的System对象™属性,则不能通过引用将该属性传递给外部函数。看到gydF4y2Ba某些属性不支持传递引用金宝appgydF4y2Ba.gydF4y2Ba
行主代码生成不支持将可变大小的矩阵作为入口点参数。金宝appgydF4y2Ba
提示gydF4y2Ba
对于代码生成,在调用之前gydF4y2Ba
coder.cevalgydF4y2Ba
,则必须指定返回值和输出参数的类型、大小和复杂性数据类型。gydF4y2Ba应用gydF4y2Ba
coder.cevalgydF4y2Ba
到一个函数,该函数接受或返回MATLAB代码中不存在的变量,例如指针,gydF4y2Ba文件gydF4y2Ba
类型的文件I/O和C/ c++宏,使用gydF4y2Bacoder.opaquegydF4y2Ba
函数。gydF4y2Ba使用gydF4y2Ba
coder.cevalgydF4y2Ba
仅在MATLAB中进行代码生成。gydF4y2Bacoder.cevalgydF4y2Ba
在未编译的MATLAB代码中生成错误。若要确定MATLAB函数是否在MATLAB中执行,请使用gydF4y2Bacoder.targetgydF4y2Ba
.如果函数在MATLAB中执行,则调用MATLAB版本的C/ c++函数。gydF4y2Ba使用调用的外部代码gydF4y2Ba
coder.cevalgydF4y2Ba
生成的代码在同一个进程中运行并共享内存。如果外部代码错误地写入包含生成代码使用的数据结构的内存,则可能导致进程行为异常或崩溃。例如,如果外部代码试图在数组的结束点之后向其写入数据,则进程可能表现出意外或崩溃。gydF4y2BaMATLAB在Windows环境下使用UTF-8作为系统编码gydF4y2Ba®gydF4y2Ba平台。因此,从生成的MEX函数中进行的系统调用接受并返回UTF-8编码的字符串。相比之下,由gydF4y2BaMATLAB编码器gydF4y2Ba使用Windows区域设置指定的编码对文本数据进行编码。如果你的MATLAB入口点函数使用gydF4y2Ba
coder.cevalgydF4y2Ba
调用采用不同系统编码的外部C/ c++函数,则生成的MEX函数可能产生乱码文本。如果发生这种情况,您必须更新外部C/ c++函数来处理这种情况。gydF4y2Ba
扩展功能gydF4y2Ba
版本历史gydF4y2Ba
在R2011a中引入gydF4y2Ba
另请参阅gydF4y2Ba
coder.refgydF4y2Ba
|gydF4y2Bacoder.rrefgydF4y2Ba
|gydF4y2Bacoder.wrefgydF4y2Ba
|gydF4y2Bacoder.targetgydF4y2Ba
|gydF4y2BacodegengydF4y2Ba
|gydF4y2Bacoder.extrinsicgydF4y2Ba
|gydF4y2Bacoder.opaquegydF4y2Ba
|gydF4y2Bacoder.columnMajorgydF4y2Ba
|gydF4y2Bacoder.rowMajorgydF4y2Ba
|gydF4y2Bacoder.updateBuildInfogydF4y2Ba
|gydF4y2Ba编码器。ExternalDependencygydF4y2Ba
|gydF4y2Bacoder.reservedNamegydF4y2Ba