主要内容gydF4y2Ba

coder.cevalgydF4y2Ba

调用外部C / c++函数gydF4y2Ba

描述gydF4y2Ba

例子gydF4y2Ba

coder.ceval (gydF4y2Bacfun_namegydF4y2Ba)gydF4y2Ba执行指定的外部C / c++函数gydF4y2Bacfun_namegydF4y2Ba。定义gydF4y2Bacfun_namegydF4y2Ba在外部C / c++源文件或库。提供外部源、库和头文件代码生成器。gydF4y2Ba

例子gydF4y2Ba

coder.ceval (gydF4y2Bacfun_namegydF4y2Ba,gydF4y2Bacfun_argumentsgydF4y2Ba)gydF4y2Ba执行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,一份可以出现在执行MATLAB生成的代码gydF4y2Ba®gydF4y2Ba语义数组。gydF4y2Ba

例子gydF4y2Ba

coder.ceval (gydF4y2Ba“全球”gydF4y2Ba,gydF4y2Bacfun_namegydF4y2Ba)gydF4y2Ba执行gydF4y2Bacfun_namegydF4y2Ba和显示gydF4y2Bacfun_namegydF4y2Ba使用一个或多个MATLAB全局变量。代码生成器可以产生的代码符合这个全局变量的使用。gydF4y2Ba

请注意gydF4y2Ba

的gydF4y2Ba全球gydF4y2Ba国旗只是支持代码生成。金宝app你不能包括在调用这个标志gydF4y2Bacoder.cevalgydF4y2Ba在MATLAB函数块。gydF4y2Ba

coder.ceval (gydF4y2Ba“全球”gydF4y2Ba,gydF4y2Bacfun_namegydF4y2Ba,gydF4y2Bacfun_argumentsgydF4y2Ba)gydF4y2Ba执行gydF4y2Bacfun_namegydF4y2Ba使用参数gydF4y2Bacfun_argumentsgydF4y2Ba和显示gydF4y2Bacfun_namegydF4y2Ba使用一个或多个MATLAB全局变量。gydF4y2Ba

coder.ceval (gydF4y2Ba“-gpudevicefcn”gydF4y2Ba、devicefun_name devicefun_arguments)gydF4y2Ba允许您调用CUDAgydF4y2Ba®gydF4y2BaGPUgydF4y2Ba__device__gydF4y2Ba从内核内部函数。gydF4y2Ba“-gpudevicefcn”gydF4y2Ba指示gydF4y2Bacoder.cevalgydF4y2Ba目标函数是在GPU设备。gydF4y2Badevicefun_namegydF4y2Ba的名称是什么gydF4y2Ba__device__gydF4y2Ba功能和gydF4y2Badevicefun_argumentsgydF4y2Ba是一个以逗号分隔的输入参数的顺序吗gydF4y2Badevicefun_namegydF4y2Ba需要。这个选项需要GPU编码器™产品。gydF4y2Ba

例子gydF4y2Ba

coder.ceval (gydF4y2Ba“布局:rowMajor”gydF4y2Ba,gydF4y2Bacfun_namegydF4y2Ba,gydF4y2Bacfun_argumentsgydF4y2Ba)gydF4y2Ba执行gydF4y2Bacfun_namegydF4y2Ba使用参数gydF4y2Bacfun_argumentsgydF4y2Ba并通过数据存储在存储布局。当从一个函数,使用列为主的布局,代码生成器将输入转换为行布局和转换输出列为主的布局。更短的语法使用gydF4y2Bacoder.ceval(‘行’,…)gydF4y2Ba。gydF4y2Ba

coder.ceval (gydF4y2Ba“布局:columnMajor”gydF4y2Ba,gydF4y2Bacfun_namegydF4y2Ba,gydF4y2Bacfun_argumentsgydF4y2Ba)gydF4y2Ba执行gydF4y2Bacfun_namegydF4y2Ba使用参数gydF4y2Bacfun_argumentsgydF4y2Ba并通过数据存储在列为主的布局。当从一个函数,使用行布局,代码生成器将输入转换成列为主的布局和转换输出回行布局。更短的语法使用gydF4y2Bacoder.ceval(坳,…)gydF4y2Ba。gydF4y2Ba

coder.ceval (gydF4y2Ba布局:任何的gydF4y2Ba,gydF4y2Bacfun_namegydF4y2Ba,gydF4y2Bacfun_argumentsgydF4y2Ba)gydF4y2Ba执行gydF4y2Bacfun_namegydF4y2Ba使用参数gydF4y2Bacfun_argumentsgydF4y2Ba并与当前数组传递数据布局,即使阵列布局不匹配。代码生成器并不把数组输入或输出数据的布局。gydF4y2Ba

例子gydF4y2Ba

cfun_return = coder.ceval (gydF4y2Ba___gydF4y2Ba)gydF4y2Ba执行gydF4y2Bacfun_namegydF4y2Ba并返回一个标量值,gydF4y2Bacfun_returngydF4y2Ba,对应的值的C / c++函数返回gydF4y2Ba返回gydF4y2Ba声明。与C / c++是一致的,gydF4y2Bacoder.cevalgydF4y2Ba只能返回标量值。它不能返回一个数组。使用这个选项的任何输入参数组合在前面的语法。gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

调用一个C函数gydF4y2Bafoo (u)gydF4y2Ba您打算从MATLAB函数生成C代码。gydF4y2Ba

创建一个C头文件gydF4y2Bafoo。gydF4y2Ba为一个函数gydF4y2Ba喷火gydF4y2Ba这需要两个输入参数的类型gydF4y2Ba双gydF4y2Ba和返回值的类型gydF4y2Ba双gydF4y2Ba。gydF4y2Ba

双foo(双in1,双in2);gydF4y2Ba

编写的C函数gydF4y2Bafoo.cgydF4y2Ba。gydF4y2Ba

# include < stdio。h > # include < stdlib。h > # include " foo。h“双重foo(双in1,双in2){返回in1 + in2;}gydF4y2Ba

写一个函数gydF4y2BacallfoogydF4y2Ba调用gydF4y2Ba喷火gydF4y2Ba通过使用gydF4y2Bacoder.cevalgydF4y2Ba。提供源文件和头文件的代码生成器的功能。gydF4y2Ba

函数gydF4y2Bay = callfoogydF4y2Ba% # codegengydF4y2Bay = 0.0;gydF4y2Ba如果gydF4y2Bacoder.target (gydF4y2BaMATLAB的gydF4y2Ba)gydF4y2Ba%执行在MATLAB中,调用MATLAB相当于gydF4y2Ba% C函数foogydF4y2Bay = 10 + 20;gydF4y2Ba其他的gydF4y2Ba%在生成的代码,执行调用C函数foogydF4y2Bacoder.updateBuildInfo (gydF4y2Ba“addSourceFiles”gydF4y2Ba,gydF4y2Ba“foo.c”gydF4y2Ba);coder.cinclude (gydF4y2Ba“foo”gydF4y2Ba);y = coder.ceval (gydF4y2Ba“foo”gydF4y2Ba10、20);gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba

生成C库函数代码gydF4y2BacallfoogydF4y2Ba。的gydF4y2BacodegengydF4y2Ba函数生成的C代码gydF4y2Ba\ codegen \ lib \ callfoogydF4y2Ba子文件夹。gydF4y2Ba

codegengydF4y2Ba配置:自由gydF4y2BacallfoogydF4y2Ba报告gydF4y2Ba

从MATLAB调用C库函数代码。gydF4y2Ba

编写一个MATLAB函数gydF4y2BamyabsvalgydF4y2Ba。gydF4y2Ba

函数gydF4y2Bay = myabsval (u)gydF4y2Ba% # codegengydF4y2Bay = abs (u);gydF4y2Ba

生成一个静态库gydF4y2BamyabsvalgydF4y2Ba,使用gydF4y2Baarg游戏gydF4y2Ba选项指定大小、类型和输入参数的复杂性。gydF4y2Ba

codegengydF4y2Ba配置:自由gydF4y2BamyabsvalgydF4y2Baarg游戏gydF4y2Ba{0.0}gydF4y2Ba
的gydF4y2BacodegengydF4y2Ba函数创建的库文件gydF4y2Bamyabsval.libgydF4y2Ba与头文件gydF4y2Bamyabsval.hgydF4y2Ba在文件夹gydF4y2Ba\ codegen \ lib \ myabsvalgydF4y2Ba。(库文件扩展名可以改变取决于你的平台。)它生成的功能gydF4y2Bamyabsval_initializegydF4y2Ba和gydF4y2Bamyabsval_terminategydF4y2Ba在相同的文件夹中。gydF4y2Ba

编写一个MATLAB函数调用生成的C库函数使用gydF4y2Bacoder.cevalgydF4y2Ba。gydF4y2Ba

函数gydF4y2Bay = callmyabsval (y)gydF4y2Ba% # codegengydF4y2Ba%检查目标。不要使用编码器。ceval如果callmyabsvalgydF4y2Ba% MATLAB中执行gydF4y2Ba如果gydF4y2Bacoder.target (gydF4y2BaMATLAB的gydF4y2Ba)gydF4y2Bamyabsval %执行在MATLAB中,调用函数gydF4y2Bay = myabsval (y);gydF4y2Ba其他的gydF4y2Ba%添加所需的包括语句生成的函数代码gydF4y2Bacoder.updateBuildInfo (gydF4y2Ba“addIncludePaths”gydF4y2Ba,gydF4y2Ba“美元(START_DIR) \ codegen \ lib \ myabsval 'gydF4y2Ba);coder.cinclude (gydF4y2Ba“myabsval_initialize.h”gydF4y2Ba);coder.cinclude (gydF4y2Ba“myabsval.h”gydF4y2Ba);coder.cinclude (gydF4y2Ba“myabsval_terminate.h”gydF4y2Ba);gydF4y2Ba%在生成的代码执行。gydF4y2Ba%之前调用初始化函数调用gydF4y2Ba% C函数第一次gydF4y2Bacoder.ceval (gydF4y2Ba“myabsval_initialize”gydF4y2Ba);gydF4y2Ba% myabsval调用生成的C库函数gydF4y2Bay = coder.ceval (gydF4y2Ba“myabsval”gydF4y2Ba,y);gydF4y2Ba%后调用终止函数gydF4y2Ba%最后一次调用C函数gydF4y2Bacoder.ceval (gydF4y2Ba“myabsval_terminate”gydF4y2Ba);gydF4y2Ba结束gydF4y2Ba

生成墨西哥人的功能gydF4y2Bacallmyabsval_mexgydF4y2Ba。在命令行提供生成的库文件。gydF4y2Ba

codegengydF4y2Ba配置:墨西哥人gydF4y2BacallmyabsvalgydF4y2Bacodegen \ lib \ myabsval \ myabsval.libgydF4y2Baarg游戏gydF4y2Ba{-2.75}gydF4y2Ba

而不是提供图书馆在命令行上,您可以使用gydF4y2Bacoder.updateBuildInfogydF4y2Ba指定库中的函数。使用这个选项preconfigure构建。添加这一行gydF4y2Ba其他的gydF4y2Ba布洛克:gydF4y2Ba

coder.updateBuildInfo (gydF4y2Ba“addLinkObjects”gydF4y2Ba,gydF4y2Ba“myabsval.lib”gydF4y2Ba,gydF4y2Ba“美元(START_DIR) \ codegen \ lib \ myabsval 'gydF4y2Ba,100年,真的,真的);gydF4y2Ba

请注意gydF4y2Ba

的gydF4y2BaSTART_DIRgydF4y2Ba宏只是支持生成代码金宝appgydF4y2BaMATLAB编码器™gydF4y2Ba。gydF4y2Ba

函数运行的墨西哥人gydF4y2Bacallmyabsval_mexgydF4y2Ba调用库函数gydF4y2BamyabsvalgydF4y2Ba。gydF4y2Ba

callmyabsval_mex (-2.75)gydF4y2Ba
ans = 2.7500gydF4y2Ba

调用MATLAB函数gydF4y2BacallmyabsvalgydF4y2Ba。gydF4y2Ba

callmyabsval (-2.75)gydF4y2Ba
ans = 2.7500gydF4y2Ba
的gydF4y2BacallmyabsvalgydF4y2Ba函数的展品为执行所需的行为在MATLAB和代码生成。gydF4y2Ba

使用gydF4y2Ba“全球”gydF4y2Ba国旗当你调用一个C函数,修改一个全局变量。gydF4y2Ba

编写一个MATLAB函数gydF4y2BauseGlobalgydF4y2Ba调用一个C函数gydF4y2BaaddGlobalgydF4y2Ba。使用gydF4y2Ba“全球”gydF4y2Ba国旗告诉代码生成器的C函数使用一个全局变量。gydF4y2Ba

函数gydF4y2Bay = useGlobal ()gydF4y2Ba全球gydF4y2Bag;t = g;gydF4y2Ba%比较执行有/没有“全球”的旗帜gydF4y2Bacoder.ceval (gydF4y2Ba“全球”gydF4y2Ba,gydF4y2Ba“addGlobal”gydF4y2Ba);y = t;gydF4y2Ba结束gydF4y2Ba

创建一个C头文件gydF4y2BaaddGlobal.hgydF4y2Ba函数的gydF4y2BaaddGlobalgydF4y2Ba。gydF4y2Ba

空白addGlobal(无效);gydF4y2Ba

编写的C函数gydF4y2BaaddGlobalgydF4y2Ba在文件中gydF4y2BaaddGlobal.cgydF4y2Ba。这个函数包含头文件gydF4y2BauseGlobal_data.hgydF4y2Ba代码生成器创建时生成代码的函数gydF4y2BauseGlobalgydF4y2Ba。这个头文件包含全局变量声明gydF4y2BaggydF4y2Ba。gydF4y2Ba

# include“addGlobal。h useGlobal_data # include。h”空白addGlobal (void) {g++;}gydF4y2Ba

生成的墨西哥人函数gydF4y2BauseGlobalgydF4y2Ba。定义代码生成器的输入,在工作区中声明全局变量。gydF4y2Ba

全球gydF4y2Bag;g = 1;codegengydF4y2BauseGlobalgydF4y2Ba报告gydF4y2BaaddGlobal.hgydF4y2BaaddGlobal.cgydF4y2Bay = useGlobal_mex ();gydF4y2Ba

与gydF4y2Ba“全球”gydF4y2Ba国旗,墨西哥人函数产生结果gydF4y2Bay = 1gydF4y2Ba。的gydF4y2Ba“全球”gydF4y2Ba国旗表明C函数的代码生成器可能修改全局变量。为gydF4y2BauseGlobalgydF4y2Ba这段代码,代码生成器产生:gydF4y2Ba

real_T useGlobal (const emlrtStack * sp) {real_T y;(空白)sp;y = g;addGlobal ();返回y;}gydF4y2Ba

没有gydF4y2Ba“全球”gydF4y2Ba国旗,墨西哥人的功能gydF4y2Bay = 2gydF4y2Ba。因为没有迹象表明C函数修改gydF4y2BaggydF4y2Ba,代码生成器假设gydF4y2BaygydF4y2Ba和gydF4y2BaggydF4y2Ba都是相同的。这个生成C代码:gydF4y2Ba

real_T useGlobal (const emlrtStack * sp){(空白)sp;addGlobal ();返回g;}gydF4y2Ba

假设您有一个C函数gydF4y2BatestRMgydF4y2Ba设计使用行布局。你想要将这个函数集成到一个MATLAB函数gydF4y2Ba酒吧gydF4y2Ba操作数组。这个函数gydF4y2Ba酒吧gydF4y2Ba目的是使用列为主的布局,采用gydF4y2Bacoder.columnMajorgydF4y2Ba指令。gydF4y2Ba

函数gydF4y2Ba= bar ()gydF4y2Ba% # codegengydF4y2Bacoder.columnMajor;coder.ceval (gydF4y2Ba“布局:rowMajor”gydF4y2Ba,gydF4y2Ba“testRM”gydF4y2Ba,gydF4y2Ba…gydF4y2Bacoder.rref(在),coder.wref ());gydF4y2Ba结束gydF4y2Ba

在代码生成器生成的代码,插入一个布局转换列为主的布局行布局的变量gydF4y2Ba在gydF4y2Ba之前通过它gydF4y2BatestRMgydF4y2Ba。在输出变量gydF4y2Ba出gydF4y2Ba代码生成器,插入一个布局转换回列为主。gydF4y2Ba

一般来说,如果你不指定gydF4y2Ba布局gydF4y2Ba选择gydF4y2Bacoder.cevalgydF4y2Ba,外部函数参数假定使用列为主。gydF4y2Ba

假设您有一个MATLAB函数调用自定义C代码需要复数的输入。你必须定义C代码输入参数,复数的输入MATLAB函数可以映射到你的C代码。gydF4y2Ba

在生成的代码中,复数是定义为一个gydF4y2Ba结构体gydF4y2Ba有两个字段,gydF4y2Ba再保险gydF4y2Ba和gydF4y2Ba即时通讯gydF4y2Ba,这是一个复数的实部和虚部分别。这gydF4y2Ba结构体gydF4y2Ba在头文件中定义吗gydF4y2Bartwtypes.hgydF4y2Ba,你可以找到的gydF4y2Bacodegen \ lib \ functionNamegydF4y2Ba当前路径的文件夹。的gydF4y2Ba结构体gydF4y2Ba定义如下:gydF4y2Ba

typedef struct {real32_T再保险;* / / *实际组件real32_T im;/ *假想组件* /}creal_T;gydF4y2Ba

有关更多信息,请参见gydF4y2BaMATLAB的类型映射到生成的代码类型gydF4y2Ba。gydF4y2Ba

C你想整合必须包括的代码gydF4y2Bartwtypes.hgydF4y2Ba头文件。一个示例C代码gydF4y2Bafoo.cgydF4y2Ba如下所示:gydF4y2Ba

# include " foo。h”# include < stdio。h > # include < stdlib。h > # include " rtwtypes。h“双重foo (creal_T x){双z = 0.0;z = x.re * x。再保险+ x.im*x.im; return (z); }

的gydF4y2Ba结构体gydF4y2Ba被命名为gydF4y2Bacreal_TgydF4y2Ba。一个头文件gydF4y2Bafoo。gydF4y2Ba也必须被定义为:gydF4y2Ba

# include“rtwtypes。h”双foo (creal_T x);gydF4y2Ba

MATLAB代码执行gydF4y2Bafoo.cgydF4y2Ba通过使用gydF4y2Bacoder.cevalgydF4y2Ba一个复数的输入的函数:gydF4y2Ba

函数gydF4y2Bay = complexCevalgydF4y2Ba% # codegengydF4y2Bay = 0.0;coder.updateBuildInfo (gydF4y2Ba“addSourceFiles”gydF4y2Ba,gydF4y2Ba“foo.c”gydF4y2Ba);coder.cinclude (gydF4y2Ba“foo”gydF4y2Ba);y = coder.ceval (gydF4y2Ba“foo”gydF4y2Ba,10 + 20);gydF4y2Ba结束gydF4y2Ba
的gydF4y2Bacoder.cevalgydF4y2Ba命令以复数的输入。代码生成器地图的复数gydF4y2Bastruct creal_TgydF4y2Ba变量gydF4y2BaxgydF4y2Ba和它的字段gydF4y2Ba再保险gydF4y2Ba和gydF4y2Ba即时通讯gydF4y2Ba。gydF4y2Ba

生成代码的函数gydF4y2BacomplexCevalgydF4y2Ba通过运行这个命令:gydF4y2Ba

codegengydF4y2Ba配置:自由gydF4y2Ba报告gydF4y2BacomplexCevalgydF4y2Ba

输入参数gydF4y2Ba

全部折叠gydF4y2Ba

外部C / c++函数的名称。gydF4y2Ba

例子:gydF4y2Bacoder.ceval (“foo”)gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba

以逗号分隔的输入参数的顺序gydF4y2Bacfun_namegydF4y2Ba需要。gydF4y2Ba

例子:gydF4y2Bacoder.ceval (“foo”,10, 20);

例子:gydF4y2Bacoder.ceval ('myFunction', coder.ref(x));

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Baint8gydF4y2Ba|gydF4y2Baint16gydF4y2Ba|gydF4y2Baint32gydF4y2Ba|gydF4y2Baint64gydF4y2Ba|gydF4y2Bauint8gydF4y2Ba|gydF4y2Bauint16gydF4y2Ba|gydF4y2Bauint32gydF4y2Ba|gydF4y2Bauint64gydF4y2Ba|gydF4y2Ba逻辑gydF4y2Ba|gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba结构体gydF4y2Ba
复数的支持:金宝appgydF4y2Ba是的gydF4y2Ba

限制gydF4y2Ba

  • 你不能使用gydF4y2Bacoder.cevalgydF4y2Ba在函数声明外在gydF4y2Bacoder.extrinsicgydF4y2Ba。gydF4y2Ba

  • 当LCC编译器创建一个库,它添加了一个主要强调库函数的名字。如果图书馆LCC的编译器和代码生成编译器不是LCC,您必须添加主要强调函数名,例如,gydF4y2Bacoder.ceval (“_mylibfun”)gydF4y2Ba。如果不是LCC的编译器库,您不能使用LCC从MATLAB代码来生成代码调用函数库。这些库函数名称没有主要强调LCC编译器要求。gydF4y2Ba

  • 如果一个属性的get方法,一组方法,或验证器,或者是一个系统对象™财产与某些属性,那么你不能通过财产通过引用一个外部函数。看到gydF4y2Ba按引用传递一些属性的不支持金宝appgydF4y2Ba。gydF4y2Ba

  • 适应矩阵作为入口点参数不支持行代码生成。金宝appgydF4y2Ba

提示gydF4y2Ba

  • 对于代码生成,然后调用gydF4y2Bacoder.cevalgydF4y2Ba,您必须指定类型、大小和复杂性的返回值和输出参数的数据类型。gydF4y2Ba

  • 应用gydF4y2Bacoder.cevalgydF4y2Ba接受或返回变量的函数,在MATLAB代码中,不存在如指针,gydF4y2Ba文件gydF4y2Ba类型的文件I / O和C / c++宏,使用gydF4y2Bacoder.opaquegydF4y2Ba函数。gydF4y2Ba

  • 使用gydF4y2Bacoder.cevalgydF4y2Ba只有在MATLAB代码生成。gydF4y2Bacoder.cevalgydF4y2Ba没有编译的MATLAB代码中生成一个错误。来确定一个MATLAB函数执行在MATLAB中,使用gydF4y2Bacoder.targetgydF4y2Ba。如果函数执行在MATLAB中,调用MATLAB版本的C / c++函数。gydF4y2Ba

  • 外部代码通过使用gydF4y2Bacoder.cevalgydF4y2Ba生成的代码运行在相同的进程和共享内存。如果外部代码错误写入内存,它包含生成的代码所使用的数据结构,它可能导致意外行为或崩溃的过程。例如,如果外部代码试图写入数据数组终点后,这个过程可能会意外的行为或崩溃。gydF4y2Ba

  • MATLAB在Windows上使用utf - 8作为其系统编码gydF4y2Ba®gydF4y2Ba平台。因此,系统调用由内生成的墨西哥人函数接受和返回utf - 8编码的字符串。相比之下,生成的代码gydF4y2BaMATLAB编码器gydF4y2Ba使用指定的编码编码文本数据窗口地区。所以,如果你的MATLAB入口点函数使用gydF4y2Bacoder.cevalgydF4y2Ba调用外部C / c++函数,假设不同的系统编码,然后生成的墨西哥人函数可能产生混乱的文本。如果发生这种情况,您必须更新外部C / c++函数来处理这种情况。gydF4y2Ba

扩展功能gydF4y2Ba

C / c++代码生成gydF4y2Ba
生成C和c++代码使用MATLAB®编码器™。gydF4y2Ba

GPU的代码生成gydF4y2Ba
生成NVIDIA的CUDA®代码®GPU使用GPU编码器™。gydF4y2Ba

版本历史gydF4y2Ba

介绍了R2011agydF4y2Ba