主要内容

编码器。ExternalDependency类

包:编码器
超类:

到外部代码的接口

描述

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

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

classdefmyClass <编码器。ExternalDependency

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

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

方法

getDescriptiveName 返回外部依赖项的描述性名称
is万博1manbetxSupportedContext 确定构建上下文是否支持外部依赖万博1manbetx
updateBuildInfo 更新构建信息

例子

全部折叠

这个例子展示了如何使用封装接口到一个外部C动态链接库编码器。ExternalDependency

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

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

生成包含的库加法器

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

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

%================================================================该类将API抽象为外部加法器库。它实现了用于更新构建信息的静态方法%在编译时和构建时。%================================================================classdefAdderAPI <编码器。ExternalDependency% # codegen方法(静态)函数bName = getDescriptiveName(~) bName =“AdderAPI”结束函数tf = is万博1manbetxSupportedContext(buildContext)如果buildContext.isMatlabHostTarget() tf = true;其他的错误('此目标无法使用加法器库');结束结束函数updateBuildInfo (buildInfo buildContext)获取当前平台的文件扩展名[~, linklibeext, execlibeext, ~] = buildContext.getStdLibInfo();添加文件路径hdrFilePath = fullfile(pwd,“codegen”“dll”“毒蛇”);buildInfo.addIncludePaths (hdrFilePath);%链接文件linkFiles = strcat(“毒蛇”, linkLibExt);linkPath = hdrFilePath;linkPriority =;linkPrecompiled = true;linkLinkOnly = true;组=;buildInfo。addLinkObjects (linkFiles linkPath,...链接优先级,linkPrecompiled, linkLinkOnly,组);%用于打包的非构建文件nbFiles =“毒蛇”;nbFiles = strcat(nbFiles, execLibExt);buildInfo.addNonBuildFiles (nbFiles);结束库函数'加法器'的%API函数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 Coder生成了加法器,使用% call前后的客房管理功能%加法器与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中引入