主要内容

定义MATLAB接口为c++库

完整的定义

创建库定义文件之后定义库名.mlx.使用clibgen.generateLibraryDefinition,您可能必须修改内容以包含接口中的功能。使用Live Editor修改文件。有关更多信息,请参见定义MATLAB签名的缺失信息

Auto-Define参数

您可以将MATLAB直接自动定义特定参数类型的类型和形状clibgen.generateLibraryDefinitionclibgen.buildInterface名称-值对参数。的选项是:

然而,当您验证库定义时,可能会得到关于重复MATLAB的错误®签名。要解决这些错误,请参见解决MATLAB签名冲突

调和MATLAB签名的冲突

在生成和编辑库定义文件之后,可能会有两个或多个具有相同MATLAB签名的函数或其他构造。要检查此冲突,请验证定义文件。例如,对于定义文件定义库名类型:

definelibname

如果存在冲突,MATLAB将显示一个错误,并在定义文件中链接到代码。要解决冲突,请选择以下方法之一:

  • 修改defineArgument要么defineOutput参数创建唯一的MATLAB签名。当有多个重载函数且指定相同的参数形参时,就会发生冲突。看到定义MATLAB签名的缺失信息

  • 通过注释掉构造的定义来删除其中一个函数。当您使用其中一个时,可能会发生冲突clibgen.generateLibraryDefinition名称 - 值对参数,用于自动转换特定类型的所有情况。您还可以删除重载的功能。

修改定义文件后,重新运行该文件以验证您的编辑。

自定义内容

回顾MATLAB用于替换无效名称的重命名方案。有关更多信息,请参见在MATLAB中无效的c++名称

查看自动生成的帮助。MATLAB会自动将一些C ++评论复制到描述DetailedDescription参数。您可以修改或替换此内容,这是基础医生命令为最终用户。

自定义函数模板名称

检查库定义文件中函数模板生成的唯一函数名。例如,类一个在这个头文件中定义了一个函数模板显示并提供类型的实例化, 和常量的

类{};//用户类型模板 void show(T a) {} template void show(int);模板空白显示<二>(双);template<> void show(const A& A){}

如果你构建一个界面一个, MATLAB为这些实例化创建带有签名的重载函数。

总结(defineA)
Matlab接口到libname库class clib.libname.a构造:clib.libname.a(clib.libname.a)clib.libname.a()没有定义的方法没有属性定义函数clib.libname.show(int32)cli​​b.libname.show(double)clib.libname.show(clib.libname.a)

C ++接口还基于签名类型生成唯一的函数名称。要查看唯一名称,请使用TemplateUniqueName财产。

d = defineA;d.Functions .TemplateUniqueName (1:3)
ans = " clib.libname。显示_int_" ans = "clib.libname.show_double_" ans = "clib.libname.show_AConst__"

您可以在库定义文件中自定义这些名称。例如,更改类对象的函数的名称,clib.libname.show_AConst__.重新启动MATLAB并编辑defineA.mlx.定位adcunction.声明的show_aconst__函数,并改变“TemplateUniqueName”名称-值对的论点。取代show_aconst__例如,具有新名称showObjectA.更新“描述”通过替换名称 - 值对参数clib.libname.show新名称clib.libname.showObjectA并修改帮助文本阅读表示c++函数显示为类A

“描述”,“clib.libname.showobjecta类A类C ++功能显示的表示。”);
帮助clib.libname.showObjectA
clib.libname.showobjecta表示A类C ++功能的表示。输入只读Clib.libname.a没有输出

有关更多信息,请参见使用函数和成员函数模板

另请参阅

|

相关话题