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 типы, как показано в таблицах 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.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

Тип элемента

std::vector<float>

clib.array. libnameединственный

clib. libnameединственный

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** Введите тип параметраMLTYPESHAPEA
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** Введите тип параметраMLTYPESHAPEA
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

Тип элемента

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

Тип элемента

bool

clib.array. libnamebool

clib. libnamebool

[a]  Для получения информации об использовании типов элемента смотрите Объект MATLAB Для Массивов C++.

Пользовательские типы

Эти таблицы показывают, как вызвать C++ пользовательский тип в интерфейсе MATLAB к библиотеке libname.

Для этих типов задайте DIRECTION как "input" и SHAPE как 1.

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

struct StructName

libname.StructName

перечислимый EnumName

libname.EnumName

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

Эквивалентный MATLAB clib.array Введите для libname

std::vector<T>

clib.array. libnameT

std::vector<T []>

clib. libnameT

std::shared_ptr<T>

clib.array. libnameT

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 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. libnamebool

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

Тип C++

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

MyClassclib. libname.MyClass

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

Тип C++

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

определение типа пусто* Handleclib. libnameуказатель

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

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

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

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

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

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

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

  • Члены справочных данных

  • void* элементы данных

  • std интеллектуальные указатели кроме std::shared_ptr

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

  • ** указатели, кроме:

    • MATLAB поддерживает char**

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

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

Смотрите также

|

Похожие темы