文档

编码器。ExternalDependency类

包:编码器
超类:

到外部代码的接口

描述

编码器。ExternalDependency是一个抽象类,用于开发外部代码和MATLAB之间的接口®用于代码生成的代码。可以定义派生自的类编码器。ExternalDependency将接口封装到外部库、目标文件和C/ c++源代码中。这种封装允许您将接口的细节从MATLAB代码中分离出来。

定义派生的类编码器。ExternalDependency,创建一个子类。例如:

classdefmyClass < coder。ExternalDependency

中列出的所有方法都必须定义方法.这些方法是静态的,没有编译。代码生成完成后,代码生成器在MATLAB中调用这些方法,为生成的代码配置构建。的环球套票。BuildInfo而且编码器。BuildConfig描述构建信息和构建上下文的对象将在构建过程中自动创建。的updateBuildInfo方法提供对这些对象的访问。有关构建信息定制的更多信息,请参见构建过程定制(MATLAB编码器)。

您还可以定义调用外部代码的方法。编译这些方法。对于您想调用的每个外部函数,编写一个方法来定义函数的编程接口。在方法上,使用coder.ceval调用外部函数。

方法

getDescriptiveName 返回外部依赖项的描述性名称
is金宝appSupportedContext 确定构建上下文是否支持外部依赖金宝app
updateBuildInfo 更新构建信息

例子

全部折叠

此示例演示如何使用编码器。ExternalDependency

写一个函数加法器它返回输入的和。

函数C =加法器(a,b)% # codegenC = a + b;结束

生成一个包含加法器

codegen (“毒蛇”“参数”{2、5},“配置:dll”“报告”

编写类定义文件AdderAPI.m封装库接口。

%================================================================这个类将API抽象到一个外部Adder库。它实现了用于更新构建信息的静态方法%在编译时和构建时。%================================================================classdefAdderAPI <编码器。ExternalDependency% # codegen方法(静态)函数bName = getDescriptiveName(~“AdderAPI”结束函数tf = is金宝appSupportedContext(buildContext)如果buildContext.isMatlabHostTarget() tf = true;其他的错误('此目标的加法器库不可用');结束结束函数updateBuildInfo (buildInfo buildContext)获取当前平台的文件扩展名[~, linkLibExt, execLibExt, ~] = buildContext.getStdLibInfo();%添加文件路径hdrFilePath = fullfile(pwd,“codegen”“dll”“毒蛇”);buildInfo.addIncludePaths (hdrFilePath);%链接文件linkFiles = strcat(“毒蛇”, linkLibExt);linkPath = hdrFilePath;linkPriority ='';linkPrecompiled = true;linkLinkOnly = true;组='';buildInfo。addLinkObjects (linkFiles linkPath,...linkPriority, linkPrecompiled, linkLinkOnly, group);%用于打包的非构建文件nbFiles =“毒蛇”;nbFiles = strcat(nbFiles, execLibExt);buildInfo.addNonBuildFiles (nbFiles'''');结束%API用于库函数'adder'函数C =加法器(a, b)如果coder.target (MATLAB的%在MATLAB中运行,使用内置加法C = a + b;其他的向生成的函数代码中添加所需的include语句。coder.cinclude (“adder.h”);coder.cinclude (“adder_initialize.h”);coder.cinclude (“adder_terminate.h”);C = 0;因为MATLAB编码器生成的加法器,使用在打电话之前和之后都要做家务。%加器与code .ceval。coder.ceval (“adder_initialize”);C = code .ceval(“毒蛇”, a, b);coder.ceval (“adder_terminate”);结束结束结束结束

写一个函数adder_main它调用外部库函数加法器

函数Y = adder_main(x1, x2)% # codegeny = AdderAPI。加法器(x1, x2);结束

生成MEX函数adder_main.MEX函数执行编码器。ExternalDependency方法。

codegen (“adder_main”“参数”{7 9},“报告”

使用平台的文件扩展名将库复制到当前文件夹。对于Windows®使用:

拷贝文件(fullfile (pwd,“codegen”“dll”“毒蛇”“adder.dll”));

Linux®使用:

拷贝文件(fullfile (pwd,“codegen”“dll”“毒蛇”“adder.so”));

执行MEX函数验证结果。

adder_main_mex(2、3)

在R2013b中介绍