exponenta event banner

Сопоставление типов данных C++ с MATLAB

В этих таблицах показано, как MATLAB ® преобразует данные C/C + + в эквивалентные типы данных MATLAB. MATLAB использует эти сопоставления при создании файлов определений библиотек. Эта информация позволяет определить отсутствующую информацию для сигнатур MATLAB.

Числовые типы

Целочисленные типы данных с фиксированной шириной

Эти сопоставления типов не зависят от платформы и компилятора. Целочисленные типы, основанные на компиляторе, см. в разделе Целочисленные типы без фиксированной ширины.

Для этих типов укажите DIRECTION как "input" и SHAPE как 1.

C Целочисленный тип с фиксированной ширинойЭквивалентный тип MATLAB

int8_t

int8

uint8_t

uint8

int16_t

int16

uint16_t

uint16

int32_t

int32

uint32_t

uint32

int64_t

int64

uint64_t

uint64

Целочисленные типы без фиксированной ширины

MATLAB поддерживает эти нефиксированные целочисленные типы C. На основе используемого компилятора MATLAB сопоставляет эти типы с соответствующими типами с фиксированной шириной C, как показано в таблицах Числовые типы с фиксированной шириной целочисленных типов данных.

  • 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 типы с MATLAB clib.array тип. Дополнительные сведения см. в разделе Объект MATLAB для массивов C++.

Для этих типов укажите DIRECTION как "input" и SHAPE как 1. Сведения об использовании типов элементов см. в разделе Объект MATLAB для массивов C++.

C++ std::vector<T> Целочисленный тип

Эквивалент MATLAB clib.array Тип для libname

Тип элемента

std::vector<int8_t>

clib.array.libname.SignedChar

clib.libname.SignedChar

std::vector<uint8_t>

clib.array.libname.UnsignedChar

clib.libname.UnsignedChar

std::vector<int16_t>

clib.array.libname.Short 

clib.libname.Short 

std::vector<uint16_t>

clib.array.libname.UnsignedShort 

clib.libname.UnsignedShort 

std::vector<int32_t>

clib.array.libname.Int

clib.libname.Int

std::vector<uint32_t>

clib.array.libname.UnsignedInt

clib.libname.UnsignedInt

std::vector<int64_t>

clib.array.libname.LongLong 

clib.libname.LongLong 

std::vector<uint64_t>

clib.array.libname.UnsignedLongLong 

clib.libname.UnsignedLongLong 

Типы с плавающей запятой

Для этих типов укажите DIRECTION как "input" и SHAPE как 1.

Тип C с плавающей запятойЭквивалентный тип MATLAB

float

single

double

double

C++ std::vector<T> Тип с плавающей запятой

Эквивалент MATLAB clib.array Тип для libname

Тип элемента [a]

std::vector<float>

clib.array.libname.Single

clib.libname.Single

std::vector<double>

clib.array.libname.Double

clib.libname.Double

[a] Сведения об использовании типов элементов см. в разделе Объект MATLAB для массивов C++.

Строковые и символьные типы

В этих таблицах показано, как C++ string и char типы данных соответствуют типам данных MATLAB. Сопоставление данных зависит от того, как тип используется в функции, в качестве входного аргумента, выходного аргумента или элемента данных. Например, эти определения функций показывают различные виды использования T.

void fnc(T);  // T is a parameter type / input arugment
T fnc();      // T is a return type / output argument

Простые символьные и строковые типы C++

Для этих типов укажите DIRECTION как "input" и SHAPE как 1.

Простой символьный тип C++Эквивалентный тип MATLAB

char

int8

signed char

int8

unsigned char

uint8

wchar_t

char

char16_t

char

char32_t

char

Простой тип строки C++Эквивалентный тип MATLAB

std::string

string
(MATLAB преобразует символы в кодировку платформы по умолчанию для std::string.)

std::wstring

string

std::u16string

string

std::u32string

string

C++ char* Типы

C++ char* Тип входного параметраMLTYPESHAPE

char*

"int8"

  • Скалярное значение

  • Массив скалярных значений

wchar_t*
char16_t*
char32_t*
"char"
  • Скалярное значение

  • Массив скалярных значений

C++ char* Тип возвратаMLTYPESHAPE

char*

"string"

"nullTerminated"

  • "clib.array.lib.Char"

  • "int8"

  • "char"

  • Скалярное значение

  • Массив скалярных значений

wchar_t*
char16_t*
char32_t*

"string"

"nullTerminated"

"char"

  • Скалярное значение

  • Массив скалярных значений

C++ char* Тип элемента данныхЭквивалентный тип MATLAB

char*

  • string

  • clib.array.lib.Char

  • int8

  • char

wchar_t*
char16_t*
char32_t*

  • string

  • char

C++ const char* Типы

C++ const char* ТипыЭквивалентный тип MATLAB

const char*

  • string

  • clib.array.lib.Char

  • int8

  • char

wchar_t*
char16_t*
char32_t*

  • string

  • char

C++ char** Типы

MATLAB не поддерживает C++ char** возвращаемые типы.

C++ char** Тип входного параметраMLTYPESHAPE[a]
char**"string"[scalar value,"nullTerminated"]
char*[]"string"[scalar value,"nullTerminated"]

[a] 1D массив строк. Первый элемент - это размер массива, а последний элемент - форма каждого элемента.

C++ char** Тип элемента данныхЭквивалентный тип MATLAB
char**

string

char*[]

string

C++ const char** Типы

MATLAB не поддерживает C++ const char** возвращаемые типы.

C++ const char** Тип входного параметраMLTYPESHAPE[a]
const char**

"string"

[scalar value,"nullTerminated"]
const char*[]

"string"

[scalar value,"nullTerminated"]

[a] 1D массив строк. Первый элемент - это размер массива, а последний элемент - форма каждого элемента.

C++ const char** Тип элемента данныхЭквивалентный тип MATLAB
const char**

string

const char*[]

string

std::vector<T> Типы строк

Для этих типов укажите DIRECTION как "input".

C++ std::vector<T> Тип строки

Эквивалент MATLAB clib.array Тип для libname

Тип элемента [a]

std::vector<std::string>

clib.array.libname.std.String 

clib.libname.std.String 

std::vector<std::wstring>

clib.array.libname.std.wString 

clib.libname.std.wString 

std::vector<std::u16string>

clib.array.libname.std.u16String 

clib.libname.std.u16String 

std::vector<std::u32string>

clib.array.libname.std.u32String 

clib.libname.std.u32String 

[a] Сведения об использовании типов элементов см. в разделе Объект MATLAB для массивов C++.

bool Типы

Для этих типов укажите DIRECTION как "input" и SHAPE как 1.

bool НапечататьЭквивалентный тип MATLAB

bool

logical

std::vector<T> bool Напечатать

Эквивалент MATLAB clib.array Тип для libname

Тип элемента [a]

bool

clib.array.libname.Bool

clib.libname.Bool

[a] Сведения об использовании типов элементов см. в разделе Объект MATLAB для массивов C++.

Определяемые пользователем типы

В этих таблицах показано, как вызвать определяемый пользователем тип C++ в интерфейсе MATLAB в библиотеку. libname.

Для этих типов укажите DIRECTION как "input" и SHAPE как 1.

Определяемый пользователем тип C++Эквивалентный тип MATLAB

struct StructName

libname.StructName

enum EnumName

libname.EnumName

Тип класса C++

Эквивалент MATLAB clib.array Тип для libname

std::vector<T>

clib.array.libname.T

std::vector<T []>

clib.libname.T

std::shared_ptr<T>

clib.array.libname.T

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.empty значение. Определить MLTYPE, найдите тип C или C++ в таблицах в этом разделе. MLTYPE находится в столбце Эквивалентный тип MATLAB.

    Тестирование для nullptr типы, вызовите isempty функция.

  • Для непринципиальных типов MATLAB возвращает nullptr объект. Тестирование для nullptr объекты, вызовите clibIsNull функция.

void* Типы аргументов

Пройти void* аргументы в функции C++ и из них см. в разделе Использование аргументов void *. MATLAB не поддерживаетvoid* члены данных.

При прохождении void* входной аргумент MATLAB преобразует базовые данные в соответствующий тип C++.

Отображение основных типов

Тип C++

Эквивалент MATLAB void* Напечатать

int8_t*

int8

uint8_t*

uint8

int16_t*

int16

uint16_t*

uint16

int32_t*

int32

uint32_t*

uint32

int64_t*

int64

uint64_t*

uint64

float*

single

double*

double

bool*

logical

clib.array Сопоставление типов

Тип C++

Эквивалент MATLAB clib.array Тип для libname

char*

clib.array.libname.Char

signed char*

clib.array.libname.SignedChar

unsigned char*

clib.array.libname.UnsignedChar

short*

clib.array.libname.Short 

unsigned short*

clib.array.libname.UnsignedShort 

int*

clib.array.libname.Int

unsigned int*

clib.array.libname.UnsignedInt

long*

clib.array.libname.Long

unsigned long*

clib.array.libname.UnsignedLong

long long*

clib.array.libname.LongLong 

unsigned long long*

clib.array.libname.UnsignedLongLong 

float*

clib.array.libname.Float

double*

clib.array.libname.Double

bool*

clib.array.libname.Bool

Типы для классов и структур C++ в библиотеке

Тип C++

Эквивалентный тип MATLAB для libname

MyClassclib.libname.MyClass

typedef void* Отображение

Тип C++

Эквивалентный тип MATLAB для libname

typedef void* Handleclib.libname.Handle

Неподдерживаемые типы данных

Если тип данных аргумента/возвращаемого типа в конструкторе класса, методе или функции является одним из этих типов или если библиотека содержит какие-либо неподдерживаемые языковые функции, то функциональность не включается в интерфейс MATLAB к библиотеке.

  • Любой тип с размером более 64 бит, например long double

  • Массивы символьных типов (wchar_t, char16_t, char32_t)

  • Ссылки на указатель, например int*&

  • Указатели или массивы std::string

  • Указатели или ссылки на перечисления

  • Ссылочные элементы данных

  • void* члены данных

  • std смарт-указатели, отличные от std::shared_ptr

  • Статические элементы данных

  • ** указатели, за исключением:

    • Опоры MATLAB char**

    • Опоры MATLAB ** указатели на пользовательские классы, используемые в качестве типов параметров функции или метода.

  • Многоуровневые указатели, например 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.

См. также

|

Связанные темы