文件

编码器.ExternalDependency类

包裹:编码器
超类:

接口到外部代码

描述

编码器.ExternalDependency.是一个抽象类,用于在外部代码和MATLAB之间开发接口®用于代码生成的代码。您可以定义派生的类编码器.ExternalDependency.要将接口封装到外部库,对象文件和C / C ++源代码。此封装允许您从MATLAB代码分隔接口的详细信息。

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

Classdef.myclass 
             

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

您还定义了调用外部代码的方法。这些方法是编译的。对于要调用的每个外部功能,写入方法以将编程接口定义为功能。在方法中,使用编码器.CEVAL.调用外部功能。

方法

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

例子

全部收缩

此示例显示如何使用的是将接口封装到外部C动态链接库编码器.ExternalDependency.

写一个功能加法器返回其输入的总和。

功能C =加法器(A,B)%#codegen.c = a + b;结尾

生成包含的库加法器

Codegen('加法器''-args',{ -  2,5},'-config:dll''-报告'

编写类定义文件adderapi.m.封装库界面。

%=================================================.===============.%此类将API摘要到外部加法库库。%它实现了更新构建信息的静态方法%在编译时和构建时间。%=================================================.===============.Classdef.adderapi %#codegen.方法(静止的)功能bname = getDescriptiveneame(〜)bname ='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功能C =加法器(A,B)如果Coder.target('matlab'%在matlab中运行,使用内置添加c = a + b;别的%将所需的包含语句添加到生成的功能代码编码器.Cinclude('adder.h');编码器.Cinclude('adder_initialize.h');编码器.Cinclude('Adder_terminate.h');c = 0;%因为matlab编码器生成了加法器,使用呼叫前后%的家务函数%加法器与coder.ceval。Coder.CEVAL('adder_initialize');c = coder.ceval('加法器',a,b);Coder.CEVAL('adder_terminate');结尾结尾结尾结尾

写一个功能Adder_main.调用外部库函数加法器

功能Y = Adder_Main(x1,x2)%#codegen.y = adderapi.adder(x1,x2);结尾

生成MEX功能Adder_main.。MEX功能练习编码器.ExternalDependency.方法。

Codegen('adder_main''-args',{7,9},'-报告'

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

COPYFILE(FullFile(PWD,'codegen''DLL''加法器''adder.dll'));

对于Linux.®, 用:

COPYFILE(FullFile(PWD,'codegen''DLL''加法器''Adder.so'));

运行MEX函数并验证结果。

Adder_main_mex(2,3)

介绍在R2013B.