创建库定义文件之后定义
使用库名
.mlx.clibgen.generateLibraryDefinition
,您可能必须修改内容以包含接口中的功能。使用Live Editor修改文件。有关更多信息,请参见定义MATLAB签名的缺失信息.
您可以将MATLAB直接自动定义特定参数类型的类型和形状clibgen.generateLibraryDefinition
和clibgen.buildInterface
名称-值对参数。的选项是:
治疗所有人常量
将标准库中的字符指针设置为以空结尾的C字符串,将“TreatConstCharPointerAsCString”争论真的
.
要将库中的所有对象指针视为标量,请设置“TreatObjectPointerAsScalar”争论真的
.
然而,当您验证库定义时,可能会得到关于重复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)clib.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没有输出
有关更多信息,请参见使用函数和成员函数模板.
clibgen.buildInterface
|clibgen.generateLibraryDefinition