文档

coder.ExternalDependencyclass

包:编码器
超:

接口外部代码

描述

coder.ExternalDependency是用于开发外部代码和MATLAB之间的接口的抽象类®代码用于代码生成。您可以定义从派生的类coder.ExternalDependency来封装的界面外部库,对象文件,和C / C ++源代码。这种封装可以让你的界面细节从MATLAB代码分开。

定义从派生的类coder.ExternalDependency,创建一个子类。例如:

classdefMyClass的
             

中列出的所有方法都必须定义方法。这些方法是静态的,没有编制。之后的代码生成完毕,为生成的代码配置构建代码生成调用MATLAB中的这些方法。该RTW.BuildInfocoder.BuildConfig描述该生成信息和构建上下文对象在生成过程中自动创建的。该updateBuildInfo方法提供了访问这些对象。关于构建信息自定义的详细信息,请参阅自定义代码生成后的构建过程

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

方法

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

例子

全部收缩

此示例示出了如何封装的界面到外部C使用动态链接库coder.ExternalDependency

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

函数C =加法器(A,B)%#代码生成C = A + B;结束

生成包含以下内容的库加法器

代码生成(“毒蛇”'-args',{ -  2,5},“配置:dll”“报告”

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

% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =%这个类将API抽象为一个外部加法器库。%它实现更新生成信息静态方法%在编译时和制作时间。% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =classdefAdderAPI %#代码生成方法(静态)函数BNAME = getDescriptiveName(〜)= BNAME'AdderAPI';结束函数TF = is万博1manbetxSupportedContext(buildContext)如果buildContext.isMatlabHostTarget()TF =真;其他错误(“加法器库不适用于此目标”);结束结束函数updateBuildInfo(buildInfo,buildContext)当前平台获取%的文件扩展名[~, linkLibExt, execLibExt, ~] = buildContext.getStdLibInfo();%添加文件路径hdrFilePath =完整文件(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库函数“加法器”函数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 = coder.ceval(“毒蛇”,A,B);coder.ceval(“adder_terminate”);结束结束结束结束

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

函数Y = adder_main(X1,X2)%#代码生成Y = AdderAPI.adder(X1,X2);结束

生成的MEX函数adder_main。该MEX功能锻炼coder.ExternalDependency方法。

代码生成('adder_main''-args'{7 9},“报告”

使用平台的文件扩展名将库复制到当前文件夹。

对于Windows®, 用:

的CopyFile(完整文件(PWD,“codegen”'DLL'“毒蛇”“adder.dll”));

对于Linux®, 用:

的CopyFile(完整文件(PWD,“codegen”'DLL'“毒蛇”“adder.so”));

运行MEX功能和验证结果。

adder_main_mex(2,3)

介绍了R2013b

这个话题有用吗?