Эти таблицы показывают как MATLAB® преобразует данные C/C++ в эквивалентные типы данных MATLAB. MATLAB использует эти отображения при создании файлов определения библиотеки. Используйте эту информацию, чтобы помочь вам задать недостающую информацию для подписей MATLAB.
Эти отображения типа независимы от платформы и компилятора. Для целочисленных типов на основе компилятора смотрите Целочисленные типы "Не Фиксированная Ширина".
Для этих типов задайте DIRECTION
как "input"
и SHAPE
как 1
.
C целочисленный тип Фиксированной Ширины | Эквивалентный тип MATLAB |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MATLAB поддерживает их "не зафиксированная ширина" C целочисленные типы. На основе используемого компилятора MATLAB сопоставляет эти типы с соответствующей фиксированной шириной C типы, как показано в таблицах Numeric Types Fixed-Width Integer Data Types.
short
short int
signed short
signed short int
unsigned short
unsigned short int
int
signed int
unsigned
unsigned int
long
signed long
signed long int
unsigned long
unsigned long int
long long
std::vector<T>
Целочисленные типыЭта таблица показывает, как типы данных MATLAB соответствуют std::vector
типы. По умолчанию MATLAB представляет std::vector
типы с clib.array
MATLAB ввод. Для получения дополнительной информации смотрите Объект MATLAB Для Массивов C++.
Для этих типов задайте DIRECTION
как "input"
и SHAPE
как 1
. Для получения информации об использовании типов элемента смотрите Объект MATLAB Для Массивов C++.
C++ std::vector<T> Целочисленный тип | Эквивалентный MATLAB | Тип элемента |
---|---|---|
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
Для этих типов задайте DIRECTION
как "input"
и SHAPE
как 1
.
C тип с плавающей точкой | Эквивалентный тип MATLAB |
---|---|
|
|
|
|
C++ std::vector<T> Тип с плавающей точкой | Эквивалентный MATLAB | Тип элемента[a] |
---|---|---|
|
| clib. |
|
| clib. |
[a] Для получения информации об использовании типов элемента смотрите Объект MATLAB Для Массивов C++. |
Эти таблицы показывают как C++ string
и char
типы данных соответствуют типам данных MATLAB. Отображение данных зависит от того, как тип используется в функции, в качестве параметра, возвратите тип или элемент данных (свойство). Например, эти функциональные определения показывают различное использование типа T
.
void fnc(T); // T is a parameter type (MATLAB input argument) T fnc(); // T is a return type (MATLAB output argument)
Для этих типов задайте DIRECTION
как "input"
и SHAPE
как 1
.
Плоскость тип символов C++ | Эквивалентный тип MATLAB |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Плоскость строковый тип C++ | Эквивалентный тип MATLAB |
---|---|
|
|
|
|
std::u16string |
|
std::u32string |
|
char*
и char[]
ТипыТип параметра C++ | MLTYPE | SHAPE |
---|---|---|
|
| Скалярное значение |
|
| |
|
| Скалярное значение |
|
| |
wchar_t* и const wchar_t* wchar_t[] и const wchar_t[] char16_t* и const char16_t* char16_t[] и const char16_t[] char32_t* и const char32_t* char32_t[] и const char32_t[] | "char" | Скалярное значение |
|
| |
[a] MATLAB устанавливает |
C++ возвращает тип | MLTYPE | SHAPE |
---|---|---|
|
| 1 |
|
| любая размерность |
|
|
Тип элемента данных C++ | Эквивалентный тип MATLAB |
---|---|
|
|
|
|
Массив C++ типа строкового параметра | MLTYPE | SHAPE [a] |
---|---|---|
| "string" | {скалярное значение, |
[a] 1D массив строки. Первым элементом является размер массива, и последним элементом является форма каждого элемента. |
Массив C++ типа элемента данных строки | Эквивалентный тип MATLAB |
---|---|
|
|
MATLAB не поддерживает их, const и nonconst C++ возвращают типы.
char**
и char*[]
wchar_t**
и wchar_t*[]
char16_t**
и char16_t*[]
char32_t**
и char32_t*[]
std::vector<T>
Строковые типыДля этих типов задайте DIRECTION
как "input"
.
C++ std::vector<T> Строковый тип | Эквивалентный MATLAB | Тип элемента[a] |
---|---|---|
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
[a] Для получения информации об использовании типов элемента смотрите Объект MATLAB Для Массивов C++. |
bool
ТипыДля этих типов задайте DIRECTION
как "input"
и SHAPE
как 1
.
bool Ввод | Эквивалентный тип MATLAB |
---|---|
|
|
| Эквивалентный MATLAB | Тип элемента[a] |
---|---|---|
|
|
|
[a] Для получения информации об использовании типов элемента смотрите Объект MATLAB Для Массивов C++. |
MATLAB обрабатывает общедоступный статический и общедоступный const статические элементы данных как свойства только для чтения. Вы не можете обновить значение статического элемента данных. Например, создайте интерфейс lib
к этому заголовочному файлу.
class Set { public: static int p1; const static int p2; }; int Set::p1 = 5; const int Set::p2 = 10;
Справка для clib.lib.Set
показывает p1
и p2
как свойства. Использовать свойства в MATLAB:
res = clib.lib.Set.p1 + clib.lib.Set.p2
res = 15
Не обновляйте статическое свойство при помощи имени класса. Если вы делаете, то MATLAB создает структуру под названием clib
. Необходимо вручную очистить clib
структура прежде, чем вызвать любые функции в интерфейсе. Например, при попытке обновить статическое свойство p1
, затем clib
переменная:
clib.lib.Set.p1 = 20
clib = lib: [1×1 struct]
Очистите переменную прежде, чем вызвать любые команды в clib.lib
.
clear clib
clib.lib.Set.p1
ans = 5
Для получения информации об использовании статических свойств как SHAPE
аргументы, смотрите Свойство Использования или Метод как SHAPE.
Эта таблица показывает, как сконфигурировать тип параметра C++ T
в файле определения для интерфейса MATLAB к библиотеке libname
, где T
класс или struct.
Тип параметра C++ | Эквивалентный тип MATLAB в libname | DIRECTION | SHAPE |
---|---|---|---|
|
| "input" | 1 |
T* | clib. | "input" | 1 |
clib.array. | "input" |
1 | |
|
| "input" | 1 |
T& |
| "input" | 1 |
|
| "output" | 1 |
|
| "input" | 1 |
|
| "input" | 1 |
|
| "input" "inputoutput" | 1 |
Эта таблица показывает, как сконфигурировать C++, возвращаются, вводят T
.
C++ возвращает тип | Эквивалентный тип MATLAB в libname | SHAPE |
---|---|---|
|
| 1 |
T* | clib. | 1 |
clib.array. |
1 | |
|
| 1 |
|
| 1 |
|
| 1 |
|
| 1 |
|
| 1 |
Эта таблица показывает, как сконфигурировать тип элемента данных C++ T
.
Тип элемента данных C++ | Эквивалентный тип MATLAB в libname | SHAPE |
---|---|---|
|
| 1 |
T* | clib. | 1 |
clib.array. |
1 | |
|
| 1 |
|
| 1 |
Эта таблица показывает, как сконфигурировать тип перечисления C++ T
в файле определения для интерфейса MATLAB к библиотеке libname
, где T
перечислимый тип.
Тип параметра C++ | Эквивалентный тип MATLAB в libname | DIRECTION | SHAPE |
---|---|---|---|
T |
| "input" | 1 |
C++ возвращает тип | Эквивалентный тип MATLAB в libname | SHAPE |
---|---|---|
T |
| 1 |
Тип элемента данных C++ | Эквивалентный тип MATLAB в libname | SHAPE |
---|---|---|
T |
| 1 |
nullptr
Типы аргументаnullptr
Типы входного параметраMATLAB обеспечивает clib.type.nullptr
введите так, чтобы можно было передать NULL функции с этими типами входного параметра C++:
Указатели на объекты. Однако указатели на основные типы массива MATLAB не поддерживаются.
shared_ptr
Массивы
clib.type.nullptr
тип поддерживается для этих типов аргумента MATLAB:
скалярные объектные указатели
clib
массивы
nullptr
Возвратите типыИнтерфейс C++ возвращает специфичный для типа empty
значения для функций, которые возвращают nullptr
.
Для типа double
, MATLAB возвращает []
для значения double.empty
.
Для всех других фундаментальных типов, MATLAB возвращает
значение. Определить MLTYPE
пустойMLTYPE
, ищите C или тип C++ в таблицах в этой теме. MLTYPE
находится в столбце Equivalent MATLAB Type.
Протестировать на nullptr
типы, вызовите isempty
функция.
Для нефундаментальных типов, MATLAB возвращает nullptr
объект. Протестировать на nullptr
объекты, вызовите clibIsNull
функция.
void*
Типы аргументаПередать void*
аргументы к и от функций C++, смотрите, Задают пусто* и пусто ** Аргументы. MATLAB не поддерживает void*
элементы данных.
При передаче void*
входной параметр, MATLAB преобразует базовые данные в соответствующий тип C++.
Отображение фундаментальных типов
Тип C++ | Эквивалентный MATLAB |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
clib.array
Отображение типов
Тип C++ | Эквивалентный MATLAB |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[a] MATLAB преобразует имена основных типов C++ к верхнему Camel-регистру. Ввод |
typedef void*
Отображение
Тип C++ | Эквивалентный тип MATLAB для |
---|---|
определение типа пусто* | clib. |
Если тип данных типа аргумента/возвращаться в конструкторе класса, методе или функции является одним из этих типов, или если библиотека содержит какие-либо неподдерживаемые функции языка, то функциональность не включена в интерфейс MATLAB к библиотеке.
Любой тип с размером, больше, чем 64 бита, например, long double
Ссылки на указатель, например, int*&
Указатели или массивы std::string
Указатели или ссылки на перечисления
Члены справочных данных
void*
элементы данных
Изменение статических элементов данных
**
указатели, кроме:
MATLAB поддерживает char**
типы.
MATLAB поддерживает **
указатели на пользовательские классы, используемые в качестве функции или method типов параметра.
MATLAB поддерживает void**
используемый в качестве функции или типов параметра метода.
Многоуровневые указатели, такие как type
***
C указатели функции и std::function
как функциональные типы возврата или элементы данных. Вы также не можете передать функцию MATLAB как вход к указателям функции C или std::function
параметр.
Шаблоны классов с неполным или никакими инстанцированиями
union
Типы заданы в std
пространство имен, кроме этих поддерживаемых типов:
std::string
std::wstring
std::u16string
std::u32string
std::vector
std::shared_ptr
std::function
MATLAB сообщает относительно построений о том использовании неподдерживаемые типы. Чтобы просмотреть эти сообщения, используйте 'Verbose'
опция в clibgen.generateLibraryDefinition
или clibgen.buildInterface
функции.
Например, предположите тот functionName
в ClassName
задан в HeaderFile.h
. Если аргумент к functionName
имеет неподдерживаемый тип type
, затем MATLAB не добавляет functionName
к файлу определения. Кроме того, если 'Verbose'
true
, затем clibgen.generateLibraryDefinition
отображения это сообщение.
Did not add member 'functionName' to class 'ClassName' at HeaderFile.h:290. 'type' is not a supported type.
clibgen.generateLibraryDefinition
| clibgen.buildInterface