你可以创建一个MATLAB®接口到基于c++ 98和常见的c++ 11特性的64位共享库。但是,如果库包含以下数据类型或语言特性,则该功能不包含在库的MATLAB接口中。您可以通过创建包装器头文件来包含此功能。有关更多信息,请参见c++限制工作示例.
例如,大小大于64位的任何类型长两倍
例如,指针的引用int (* &
的指针或数组std:: string
指向枚举的指针或引用
引用数据成员
void *
数据成员
修改静态数据成员
**
指针,除了:
MATLAB支金宝app持char * *
类型。
MATLAB支金宝app持**
指向自定义类的指针,用作函数或方法参数类型。
MATLAB支金宝app持void * *
用作函数或方法参数类型。
多级指针,例如类型
***
C函数指针和std::函数
作为函数返回类型或数据成员。也不能将MATLAB函数作为输入传递给C函数指针或std::函数
参数。
具有不完整或没有实例化的类模板
联盟
中定义的类型性病
命名空间,除了以下支持的类型:金宝app
std:: string
std:: wstring
std:: u16string
std:: u32string
std::向量
std::要
std::函数
如果库使用这些数据类型,则该功能不包含在库的MATLAB接口中,MATLAB将显示如下消息:
在HeaderFile.h:290中没有将成员“methodName”添加到类“ClassName”中。'long double'不是受支持的类型。金宝app
要查看这些消息,请使用“详细”
选项中的clibgen.generateLibraryDefinition
或clibgen.buildInterface
功能。
移动
构造函数
重载操作符函数
未命名的命名空间和类
预处理器指令(宏)
全局变量
可变的函数
不完整或没有实例化的函数模板
中创建类的对象性病
命名空间,包括自定义类。
智能指针语义。只有std::要
是支持金宝app的。MATLAB不支持操作符重载、移金宝app动语义和智能指针类定义中的成员函数,这些可能会限制它们的有效性。相反,一个std::要查看< T >
行为为类型T
在MATLAB。类型T
可以作为输入传递std::要查看< T >
,和类型T
作为输出接收std::要查看< T >
.
命名空间别名。请使用原来的命名空间名称。
当你构建一个包含这些特性或用法的库时,MATLAB会显示:
警告:头文件中的某些c++语言结构不受支持,不能导入。金宝app
请注意
不支持将c++对象保存到mat文件中。金宝app
MATLAB不支持创建继承c++金宝app接口类的MATLAB类。
MATLAB不支持通过定义这些关金宝app联函数来实现运算符。
操作 |
方法来定义 |
---|---|
A < b |
lt (a, b) |
A > b |
gt (a, b) |
A <= b |
勒(a, b) |
A >= b |
通用电气(a, b) |
A ~= b |
ne (a, b) |
A == b |
eq (a, b) |
(s1, s2,…,sn) |
subsref (a, s) |
A (s1,…,sn) = b |
subsassign (s b) |
b (a) |
subsindex (a) |