主要内容

转换codegen命令到等效MATLAB编码器项目

您可以使用codegen命令使用-toproject选项来转换codegen命令到等价的MATLAB®编码器™项目文件。然后,您可以使用另一个项目文件从该项目文件生成代码codegen命令或MATLAB编码器应用程序。

例如,要转换acodegen带有输入参数的命令input_arguments到项目文件myProject.prj运行:

codegeninput_arguments-toprojectmyProject.prj

输入参数到codegen包括:

  • 入口点函数的名称

  • 类型指定的输入类型定义arg游戏选项

  • 代码生成选项,包括在配置对象中指定的参数

  • 要包含在生成代码中的自定义源文件的名称

你也可以使用-toproject选项转换不完整的codegen命令到项目文件。例如,创建一个项目文件myProjectTemplate.prj仅包含存储在配置对象中的代码生成参数cfg运行:

codegen配置cfg-toprojectmyProjectTemplate.prj
myProjectTemplate.prj不包含入口点函数或输入类型的规范。因此,您不能从这个项目文件生成代码。你可以打开myProjectTemplate.prjMATLAB编码器应用程序,并将其用作模板,以创建可用于生成代码的完整项目文件。

请注意

运行codegen命令使用-toproject选项不生成代码。它只创建项目文件。

示例:转换完成codegen命令到项目文件

定义一个MATLAB函数,myadd,返回两个值的和。

函数Y = myadd(u,v)% # codegenY = u + v;结束

创建一个编码器。CodeConfig对象用于生成静态库。集TargetLang“c++”

CFG = code .config(“自由”);cfg。TargetLang =“c++”

在MATLAB命令行中,创建并运行一个codegen命令。指定myadd作为入口点函数。指定输入myadd作为可变大小的类型矩阵它的维度是无界的。指定cfg作为代码配置对象。包括-toproject选项来转换codegen命令到等价的MATLAB编码器带名称的项目文件myadd_project.prj

codegen配置cfgmyaddarg游戏{coder.typeof([正无穷,正无穷]),coder.typeof(1[正无穷,正无穷])}-toprojectmyadd_project.prj
项目文件myadd_project。Prj '成功创建。开放项目

代码生成器创建项目文件myadd_project.prj在当前工作文件夹中。运行codegen-toproject选项不生成代码。它只创建项目文件。

myadd_project.prj通过使用另一个codegen命令。

codegenmyadd_project.prj

代码生成器生成一个c++静态库函数myadd工作\ codegen \ lib \ myadd文件夹,工作当前工作目录。

示例:转换Incompletecodegen命令到模板项目文件

创建一个编码器。CodeConfig对象用于生成静态库。集TargetLang“c++”

CFG = code .config(“自由”);cfg。TargetLang =“c++”

在MATLAB命令行中,创建并运行一个codegen命令。指定cfg作为代码配置对象。包括-toproject选项来转换codegen命令到等价的MATLAB编码器带名称的项目文件myProjectTemplate.prj

codegen配置cfg-toprojectmyProjectTemplate.prj
项目文件myProjectTemplate。Prj '成功创建。开放项目

现在你可以打开myProjectTemplate.prjMATLAB编码器应用程序,并将其用作模板,以创建可用于生成代码的完整项目文件。

限制

当你使用codegen命令使用-toproject选项,这些限制适用:

  • 导出CodeTemplatea的参数编码器。EmbeddedCodeConfig对象添加到项目文件中不支持。金宝app

  • 假设你的codegen命令用于生成MEX功能编码器。常数定义一个常量输入afi(定点设计师)对象obj

    某些fi对象属性由其他属性启用。当你构造一个fi对象时,这些属性将被设置为默认值,除非显式地修改它们。在obj,将一个或多个未启用的属性设置为非默认值。看到fi对象属性(定点设计师)

    你转换这个codegen命令添加到项目文件-toproject选择。构建项目文件并生成一个MEX函数。当你经过obj作为生成的MEX函数的常量输入参数并运行MEX,则MEX可能会抛出错误。

    的属性,以解决此问题obj在将其传递给MEX函数之前,未启用其默认值。为此,定义一个newfi对象obj_new

    A = mat2str(obj);Obj_new = eval(a);

    通过obj_new作为生成的MEX函数的常量输入。

另请参阅

相关的话题