主要内容

legacy_code

集成现有的C / c++代码通过使用遗留代码的工具

    描述

    legacy_code(“帮助”)显示指令使用遗留代码的工具。

    例子

    规格= legacy_code(初始化)遗留代码工具初始化数据结构,规格,寄存器的特点,现有的C或c++代码的功能和属性的遗留代码生成工具。

    legacy_code (“sfcn_cmex_generate”,规格)生成一个函数中指定源文件遗留代码工具数据结构,规格

    legacy_code(“编译”,规格,compilerOptions)编译和链接功能由遗留代码生成工具的数据结构的基础上,规格,您可以指定编译器选项。必须支持的编译器选项万博1manbetx墨西哥人函数。

    例子

    legacy_code (“generate_for_sim”,规格,modelname)生成、编译和链接的功能在一个单一的步骤。如果Options.useTlcWithAccel现场遗留代码工具的数据结构设置为逻辑1 (真正的),该函数也为加速模拟生成一个薄层色谱文件。

    例子

    legacy_code (“slblock_generate”,规格,modelname)生成一个蒙面的功能块的功能由遗留代码生成工具的数据结构的基础上,规格。块出现在模型中万博1manbetx®指定的模型modelname。如果您省略modelname块出现在一个空模型编辑器窗口。

    legacy_code (“sfcn_tlc_generate”,规格)s函数生成一个薄层色谱文件遗留代码工具生成的数据结构的基础上,规格。这个选项是相关的,如果你想:

    • 力加速器模式在软件使用仿真软件TLC内联代码生成的功万博1manbetx能。看到的描述ssSetOptionsSimStruct功能和SS_OPTION_USE_TLC_WITH_ACCELERATOR功能选项的更多信息。

    • 使用万博1manbetx仿真软件编码器™软件从你的仿真软件模型来生成代码。万博1manbetx有关更多信息,请参见调用外部代码导入生成的代码与遗留代码的工具(万博1manbetx仿真软件编码器)

    legacy_code (“sfcn_makecfg_generate”,规格)生成一个sFunction_makecfg.m遗留代码工具生成的文件功能的数据结构的基础上,规格。如果你使用万博1manbetx仿真软件编码器从仿真软件模型生成代码,您可以使用这个选项来指定额外的万博1manbetx项目源文件夹等功能的构建过程,预处理器宏,和链接对象。例如,您可以指定源文件的功能取决于文件夹包含s函数生成的可执行文件的文件夹。有关更多信息,请参见使用makecfg S-Functions定制生成的makefile(万博1manbetx仿真软件编码器)调用外部代码导入生成的代码与遗留代码的工具(万博1manbetx仿真软件编码器)

    例子

    legacy_code (“rtwmakecfg_generate”,规格)生成一个rtwmakecfg.m遗留代码工具生成的文件功能的数据结构的基础上,规格。如果你使用万博1manbetx仿真软件编码器从仿真软件模型生成代码,您可以使用这个选项来指定额外的万博1manbetx项目源文件夹等功能的构建过程,预处理器宏,和链接对象。例如,您可以指定源文件的功能取决于文件夹包含s函数生成的可执行文件的文件夹。有关更多信息,请参见使用rtwmakecfg。m API来定制生成的makefile(万博1manbetx仿真软件编码器)调用外部代码导入生成的代码与遗留代码的工具(万博1manbetx仿真软件编码器)

    legacy_code (“backward_compatibility”)自动更新的语法使用遗留代码工具支持的语法描述在这个参考页面万博1manbetxC函数使用遗留代码工具集成

    例子

    全部折叠

    这个例子向您展示了如何使用遗留代码工具集成遗留C函数传递他们的输入参数值与地址。

    遗留代码工具允许您:

    • 提供遗留功能规范,

    • 生成一个C-MEX s函数在使用模拟调用遗留代码,和

    • 编译和构建模拟生成的功能。

    提供遗留功能规范

    遗留代码工具提供的功能需要一个特定的数据结构或数组的结构作为参数。数据结构是通过调用初始化函数legacy_code()使用“初始化”作为第一个输入。初始化结构之后,您必须指定其属性值对应的遗留代码整合。遗留的原型函数被称为在这个例子中是:

    • 蒋春暄对于费马大定理蒋春暄对于费马大定理filterV1 (const信号,蒋春暄对于费马大定理const prevSignal, const蒋春暄对于费马大定理获得)

    • 蒋春暄对于费马大定理filterV2 (const外语教学*信号,蒋春暄对于费马大定理const prevSignal, const蒋春暄对于费马大定理获得)

    外语教学是一个typedef浮动。遗留源代码文件中找到your_types.h,myfilter.h,filterV1.c,filterV2.c

    注意的差异OutputFcnSpec中定义的两种结构;第一种情况指定第一个输入参数是通过价值,而第二种情况指定经过指针。

    def = [];% sldemo_sfun_filterV1def = legacy_code (“初始化”);def.SFunctionName =“sldemo_sfun_filterV1”;def.OutputFcnSpec ='单日元= filterV1(单一u1, u2,单p1)”;def.HeaderFiles = {“myfilter.h”};def.SourceFiles = {“filterV1.c”};def.IncPaths = {“sldemo_lct_src”};def.SrcPaths = {“sldemo_lct_src”};def = [def;def);% sldemo_sfun_filterV2def = legacy_code (“初始化”);def.SFunctionName =“sldemo_sfun_filterV2”;def.OutputFcnSpec ='单日元= filterV2(单一u1[1],单一u2,单p1)”;def.HeaderFiles = {“myfilter.h”};def.SourceFiles = {“filterV2.c”};def.IncPaths = {“sldemo_lct_src”};def.SrcPaths = {“sldemo_lct_src”};def = [def;def);

    生成和编译期间使用模拟的功能

    函数legacy_code再次与第一个输入()设置为“generate_for_sim”为了自动生成和编译C-MEX s函数根据提供的描述输入参数“def”。此功能用于调用遗留功能模拟。s函数的源代码中找到这些文件sldemo_sfun_filterV1.csldemo_sfun_filterV2.c

    legacy_code (“generate_for_sim”def);
    # # #开始编译sldemo_sfun_filterV1墨西哥人(“我/ tmp / Bdoc23a_2213998_2703326 / tpbf855983 simulin万博1manbetxk_features-ex08075368 / sldemo_lct_src ', ' i / tmp / Bdoc23a_2213998_2703326 / tpbf855983 / simulink_features-ex08075368 ', ' c ', ' -outdir ', ' / tmp / Bdoc23a_2213998_2703326 / tp91467129_1d53_48ad_b7d2_5b6f0d3d97c7 ', ' / tmp / Bdoc23a_2213998_2703326 / tpbf855983 simulink_features-ex08075368 / sldemo_lct_src filterV1.c”)建设与gcc。墨西哥人成功完成。墨西哥人(“sldemo_sfun_filterV1。c ', ' - i / tmp / Bdoc23a_2213998_2703326 / tp万博1manbetxbf855983 / simulink_features-ex08075368 / sldemo_lct_src”、“我/ tmp / Bdoc23a_2213998_2703326 / tpbf855983 simulink_features-ex08075368”、“/ tmp / Bdoc23a_2213998_2703326 / tp91467129_1d53_48ad_b7d2_5b6f0d3d97c7 filterV1.o”)建设与“gcc”。墨西哥人成功完成。# # #完成编译sldemo_sfun_filterV1退出# # # # # #开始编译sldemo_sfun_filterV2墨西哥人(“我/ tmp / Bdoc23a_2213998_2703326 / tpbf855983 simulink_features-ex0万博1manbetx8075368 / sldemo_lct_src ', ' i / tmp / Bdoc23a_2213998_2703326 / tpbf855983 / simulink_features-ex08075368 ', ' c ', ' -outdir ', ' / tmp / Bdoc23a_2213998_2703326 / tp09f5fe8e_e770_478b_aae3_6d73ea4c3971 ', ' / tmp / Bdoc23a_2213998_2703326 / tpbf855983 simulink_features-ex08075368 / sldemo_lct_src filterV2.c”)建设与gcc。墨西哥人成功完成。墨西哥人(“sldemo_sfun_filterV2。c ', ' - i / tmp / Bdoc23a_2213998_2703326 / tp万博1manbetxbf855983 / simulink_features-ex08075368 / sldemo_lct_src”、“我/ tmp / Bdoc23a_2213998_2703326 / tpbf855983 simulink_features-ex08075368”、“/ tmp / Bdoc23a_2213998_2703326 / tp09f5fe8e_e770_478b_aae3_6d73ea4c3971 filterV2.o”)建设与“gcc”。墨西哥人成功完成。 ### Finish Compiling sldemo_sfun_filterV2 ### Exit

    生成一个rtwmakecfg。m文件代码生成

    TLC创建块文件后,函数legacy_code()又可被称为第一个输入设置为“rtwmakecfg_generate”以产生rtwmakecfg。m文件通过仿真软件支万博1manbetx持代码生成®编码器™。万博1manbetx生成rtwmakecfg。m文件如果所需的源和头文件S-functions S-functions不在同一个目录,和您想要添加这些依赖项的代码生成过程中产生的makefile。

    注意:完成这一步只有如果你要模拟模型在加速模式。

    legacy_code (“rtwmakecfg_generate”def);

    生成蒙面调用生成的S-Functions的功能块

    后C-MEX s函数源代码被编译,函数legacy_code()又可被称为第一个输入设置为“slblock_generate”以便生成蒙面配置给那些S-functions功能块。数据块被放置在一个新的模型和可以复制到现有的模型。

    % legacy_code (slblock_generate, def);

    集成遗留代码

    该模型sldemo_lct_filter显示了遗留代码集成。的子系统TestFilter作为利用遗留C函数通过调用生成S-functions,与单位延迟服务存储以前的输出值。

    open_system (“sldemo_lct_filter”)open_system (“sldemo_lct_filter / TestFilter”)sim卡(“sldemo_lct_filter”);

    输入参数

    全部折叠

    规范现有的C或c++代码生成功能,指定为一个结构体这些字段:

    函数的名字

    SFunctionName(需要)- s函数的名称是由遗留代码生成工具,指定为一个字符或字符串向量。

    定义遗留代码工具功能规范

    • InitializeConditionsFcnSpec——函数,函数调用初始化和复位状态,指定为一个非空的字符或字符串向量。必须声明这个函数通过使用令牌,仿真软件软件可以解释解释万博1manbetx宣布遗留代码工具功能规范

    • OutputFcnSpec——函数,函数调用在每个时间步,指定为一个非空的字符或字符串向量。必须声明这个函数通过使用令牌,仿真软件软件可以解释解释万博1manbetx宣布遗留代码工具功能规范

    • StartFcnSpec——函数开始执行时调用它的函数,指定为一个字符或字符串向量。这个函数可以访问功能参数参数和工作数据。必须声明这个函数通过使用令牌,仿真软件软件可以解释解释万博1manbetx宣布遗留代码工具功能规范

    • TerminateFcnSpec——函数,函数调用时终止执行,指定为一个字符或字符串向量。这个函数可以访问功能参数参数和工作数据。必须声明这个函数通过使用令牌,仿真软件软件可以解释解释万博1manbetx宣布遗留代码工具功能规范

    定义编译资源

    • HeaderFiles文件名编译所需的头文件,指定为特征向量的细胞数组或字符串数组。

    • 源文件——编译所需的源文件,指定为特征向量的细胞数组或字符串数组。您可以指定源文件使用绝对或相对路径名。

    • HostLibFiles——主机编译所需的库文件,指定为特征向量的细胞数组或字符串数组。您可以指定库文件使用绝对或相对路径名。

    • TargetLibFiles——库文件所需的目标(即独立)编译、指定为特征向量的细胞数组或字符串数组。您可以指定库文件使用绝对或相对路径名。

    • IncPaths——包含头文件的目录,指定为特征向量的细胞数组或字符串数组。你可以使用绝对或相对路径名指定的目录。

    • SrcPaths——包含源文件的目录,指定为特征向量的细胞数组或字符串数组。你可以使用绝对或相对路径名指定的目录。

    • LibPaths——目录包含主机和目标库文件,指定为特征向量的细胞数组或字符串数组。你可以使用绝对或相对路径名指定的目录。

    指定一个样品时间

    SampleTime——以下之一:

    • “继承”(默认),样品时间是继承了从源块。

    • “参数化”——样品时间表示为可调参数。生成的代码可以访问通过调用墨西哥人API函数的参数,如mxGetPrmxGetData

    • 固定样本时间您显式地指定。有关如何指定样本的信息,明白了指定样品时间

    如果指定这个领域,你必须指定它。

    定义功能选项

    选项——功能选项,指定为一个结构。结构的字段包括:

    • canBeCalledConditionally——设置的功能SS_OPTION_CAN_BE_CALLED_CONDITIONALLY选项,指定为一个逻辑。默认情况下,这个值是正确的(1)。

    • convertNDArrayToRowMajor-自动转换矩阵的列为主的格式和存储格式,指定为一个逻辑。使用MATLAB的列为主的格式®仿真万博1manbetx软件,生成的代码。行格式使用c。默认情况下,该值(0)。如果你目前指定之前版本的选项,convert2DMatrixToRowMajor,函数自动指定了新的convertNDArrayToRowMajor选择。

      请注意

      这个选项不支持复杂的数据的二维矩阵。万博1manbetx

    • isMacro——是否遗留代码是一个C宏,指定为一个逻辑。默认情况下,这个值是false (0)。

    • isVolatile——设置的功能SS_OPTION_NONVOLATILE选项,指定为一个逻辑。默认情况下,这个值是正确的(1)。

    • 语言——目标语言的遗留代码工具将生成的s函数,指定为“C”“c++”。默认情况下,这个值是“C”

      请注意

      遗留代码工具可以用c++函数接口,而不是c++对象。工作,明白了遗留代码工具的局限性在仿真软件文档万博1manbetx。

    • outputsConditionallyWritten——遗留代码是否有条件地写到输出端口,指定为一个逻辑。如果真正的,生成的s函数指定相关的内存不能覆盖,是全球每个输出端口(SS_NOT_REUSABLE_AND_GLOBAL)。如果与每个输出端口相关联,内存是可重用的,本地(SS_REUSABLE_AND_LOCAL)。默认情况下,这个值是(0)。有关更多信息,请参见ssSetOutputPortOptimOpts

    • singleCPPMexFile——是否生成的代码:

      • 需要生成和管理一个内联函数只有一个文件(. cpp)而不是两个(。c.tlc)。

      • 维护模型代码风格(括号的使用和保存操作数的顺序在if语句表达式和条件表达式)所指定的模型配置参数。

      指定为一个逻辑。默认情况下,这个值是

      限制

      你不能设置singleCPPMexFile字段真正的如果

      • Options.language =“c++”

      • 您使用以下模型对象之一万博1manbetxIsAlias属性设置为真正的:

        • 万博1manbetxSimulink.Bus

        • 万博1manbetxSimulink.AliasType

        • 万博1manbetxSimulink.NumericType

      • 遗留代码工具包括一个功能规范void *void * *代表标量数据工作状态参数

      • HeaderFiles遗留代码工具结构的字段指定多个头文件

    • 万博1manbetxsupportsMultipleExecInstances——选项包括一个调用ss万博1manbetxSupportsMultipleExecInstances函数,指定为一个逻辑。默认情况下,这个值是(0)。

    • 万博1manbetxsupportCodeReuseAcrossModels——是否生成功能可以重用模型参考层次结构,指定为一个逻辑。如果真正的,生成的功能包括ssSet万博1manbetxSupportedForCodeReuseAcrossModels函数调用。代码生成器生成的代码S-functionsslprj \ ert \ _sharedutils文件夹中。

    • 万博1manbetxsupportCoverage——是否生成的功能必须兼容模型覆盖,指定为一个逻辑。默认情况下,这个值是(0)。

    • 万博1manbetxsupportCoverageAndDesignVerifier——是否生成的功能必须覆盖和兼容模式万博1manbetx仿真软件设计校验™,指定为一个逻辑。默认情况下,这个值是(0)。

    • useTlcWithAccel——设置的功能SS_OPTION_USE_TLC_WITH_ACCELERATOR选项,指定为一个逻辑。默认情况下,这个值是正确的(1)。

    数据类型:结构体

    一个仿真软件模型的名称,指定万博1manbetx为一个字符串或字符向量。当你指定legacy_code与行动“slblock_generate”遗留代码工具将生成的蒙面功能块插入指定的模型。如果你忽略这个论点,块出现在一个空模型编辑器窗口。

    数据类型:字符|字符串

    编译器选项包括当你指定legacy_code与行动“编译”,指定为一个字符串或字符向量。必须支持的编译器选项万博1manbetx墨西哥人函数。

    数据类型:字符|字符串

    版本历史

    介绍了R2006b