Main Content

defineArgument

类: clibgen.FunctionDefinition
命名空间: clibgen

添加 C++ 包函数的输入参量定义

说明

defineArgument(FunctionDefinition,CPPName,MATLABType) 为 C++ 包函数添加输入参量定义。

defineArgument(FunctionDefinition,CPPName,MATLABType,Direction) 定义参量是输入、输出,还是两者兼而有之。

defineArgument(FunctionDefinition,CPPName,MATLABType,Direction,Shape) 提供有关数据维度的信息。

defineArgument(___,Name,Value) 添加由一个或多个 Name,Value 对组参量指定的附加参量定义选项,且可包含上述语法中的任何输入参数。

输入参数

全部展开

函数定义,指定为 clibgen.FunctionDefinition 对象。

C++ 参量名称,指定为字符串标量或字符向量。

MATLAB® 类型,指定为字符串标量或字符向量。有关详细信息,请参阅 Define Missing MLTYPE Parameter

参量类型,对于输入参量指定为 "input",对于输出参量指定为 "output",对于同时作为输入和输出的参量指定为 "inputoutput"。有关详细信息,请参阅 Define Missing DIRECTION Parameter

MATLAB 用于定义数据维度的维度定义,指定为字符串向量、标量文本、正整数向量、"nullTerminated" 或元胞数组。对于元胞数组,元素是标量文本和正整数标量的组合。有关详细信息,请参阅 Define Missing SHAPE Parameter

如果可以将参量维度定义为固定标量值,请输入数字,例如 5

如果维度由另一个参量定义,则以字符串形式输入参量名称。例如,假设有以下 C++ 签名。如果参量 len 定义 data 的长度,则 Shape 的值为 "len"

myFunc(const int *data, int len)

如果参量的大小由数组定义,则 Shape 的值为下列值之一:

  • 1

  • 固定维度:输入数值数组,例如 [5,2]

  • 可变维度:输入由参数名称组成的字符串数组,例如 ["row","col"]

如果参量的 C++ 类型是字符串,则使用这些选项为 MATLABTypeShape 参量选择值。

C++ 类型MATLABTypeDIRECTIONSHAPE 的选项
char*a

"int8"

"input"

标量值
标量值构成的数组

char**
char*[]

"string"

"input"

元胞

const char*

"char"

 

标量值
标量值构成的数组

"string"

"input"

"nullTerminated"

const char**
const char*[]

"char"

"input"

标量值
标量值构成的数组

"string"

"input"

"nullTerminated"

a These types are equivalent to MATLAB char:

  • wchar_t

  • char16_t

  • char32_t

有关详细信息,请参阅C++ to MATLAB Data Type Mapping

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

C++ 参量说明,指定为字符串标量或字符向量。此值设置 Description 属性。

自 R2020a 起

转移参量的内存所有权,指定为数值或逻辑值 1 (true) 或 0 (false)。MATLAB 拥有作为输入参量的指针或引用分配的内存。C++ 库不会释放此内存。要更改非 const 参量的此行为,请将 'ReleaseOnCall' 设置为 true

以下各项不支持 'ReleaseOnCall' 参量:

  • const 参量。

  • 定义为输出的双精度指针(obj**void**)参量。

如果未指定 'ReleaseOnCall',则 ReleaseOnCall 为 false。

有关详细信息,请参阅 Lifetime Management of C++ Objects in MATLAB

示例: 'ReleaseOnCall',true

数据类型: logical

填充维度的位置,指定为数值或逻辑值 1 (true) 或 0 (false)。默认情况下,当 MATLAB 输入的维度少于对应的 C++ 参量时,则 MATLAB 在 Shape 参量的开头插入单一维度。要在末尾插入单一维度,请将 'AddTrailingSingletons' 设置为 true。有关详细信息,请参阅Dimension Matching

示例: 'AddTrailingSingletons',true

数据类型: logical

以空值结尾的 C++ 字符串参量的缓冲区大小,指定为数值标量、字符串标量或字符向量。该大小是缓冲区中 C++ 元素的数量。对 MLTYPE 值为 "string"DIRECTION 值为 "output" 的参数使用 NumElementsInBuffer。要指定:

  • 固定大小值,请使用数值标量。

  • 固定大小数组,该值必须与数组的大小相同。

  • 另一个参数的名称,请使用字符串标量或字符向量。参数必须为整数值。

使用此缓冲区为 C++ 函数返回的以空值结尾的字符串参量定义参量。MATLAB 将以空值结尾的 C++ 字符串转换为 MATLAB 字符串。

NumElementsInBuffer 参量不支持:

  • const 类型

  • void *

有关示例,请参阅Define String Argument表中的 getMessage 函数。

示例: "NumElementsInBuffer", "bufLen"

自 R2020a 起

删除函数,指定为字符串标量或字符向量。删除函数可以是 C++ 标准 delete 操作符或用户定义的函数。对于具有双精度指针输入参量的函数,请使用 'DeleteFcn',例如 void**object**

当您指定 'DeleteFcn' 时,MATLAB 将获得所有权并管理该参量所表示的内存的生命周期。如果未指定 'DeleteFcn',则库负责管理内存。

如果为删除函数指定库函数,则该函数不会包含在接口中,用户无法从 MATLAB 调用该函数。MATLAB 用户调用 MATLAB delete 函数,该函数调用由 'DeleteFcn' 指定的函数。

有关详细信息,请参阅Pass Ownership of Memory to MATLAB

示例: 'DeleteFcn','objFree'

版本历史记录

在 R2019a 中推出