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

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

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 (MATLAB input argument)
T fnc();      // T is a return type (MATLAB 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* и char[] Типы

Тип параметра C++MLTYPESHAPE

char*[a]
const char*

"int8"
"char"
"clib.array.lib.Char"

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

"string"

"nullTerminated"

char[]
const char[]

"int8"
"char"
"clib.array.lib.Char"

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

"string"

"nullTerminated"

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"

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

"string"

"nullTerminated"

[a] MATLAB устанавливает DIRECTION из char* параметр вводит к "input". Задавать char* аргумент как строка выход, набор DIRECTION к "output" и используйте 'NumElementsInBuffer' аргумент значения имени. Для примера смотрите getMessage функция в таблице Define String Argument.

C++ возвращает типMLTYPESHAPE

char*
wchar_t*
char16_t*
char32_t*

"int8"

1

const char*
const wchar_t*
const char16_t*
const char32_t*

"int8"
"char"
"clib.array.lib.Char"

любая размерность

"string"

"nullTerminated"

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

char*
char[]

string
clib.array.lib.Char
int8
char

wchar_t*
char16_t*
char32_t*

string
char

Массив C++ строк

Массив C++ типа строкового параметраMLTYPESHAPE[a]

char**
const char**

char*[]
const char*[]

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*[]

"string"

{скалярное значение, "nullTerminated"}
{название параметра, "nullTerminated"}

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

Массив C++ типа элемента данных строкиЭквивалентный тип MATLAB

char*[] и const char*[]
wchar_t*[] и const wchar_t*[]
char16_t*[] и const char16_t*[]
char32_t*[] и const char32_t*[]

string

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

clib. libnamebool

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

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

Класс и типы Struct

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

Тип параметра C++

Эквивалентный тип MATLAB в libnameDIRECTIONSHAPE

T

clib. libnameT

"input"

1

T*clib. libnameT"input"

1

clib.array. libnameT"input"

1
Фиксированные размерности: Введите числовой массив, такой как [5,2].
Переменные размерности: Введите массив строк названий параметра, таких как ["row","col"].

T[]

clib.array. libnameT

"input"

1
Фиксированные размерности
Переменные размерности

T&

clib. libnameT

"input"

1

T**

clib. libnameT

"output"

1

std::vector<T>

clib.array. libnameT

"input"

1

std::shared_ptr<T>

clib. libnameT

"input"

1

std::shared_ptr<T>&

clib.array. libnameT

"input"
"inputoutput"

1

Эта таблица показывает, как сконфигурировать C++, возвращаются, вводят T.

C++ возвращает типЭквивалентный тип MATLAB в libnameSHAPE

T

clib. libnameT

1

T*clib. libnameT

1

clib.array. libnameT

1
Фиксированные размерности: Введите числовой массив, такой как [5,2].
Переменные размерности: Введите массив строк названий параметра, таких как ["row","col"].

T[]

clib.array. libnameT

1
Фиксированные размерности
Переменные размерности

T&

clib. libnameT

1

std::vector<T>

clib.array. libnameT

1

std::shared_ptr<T>

clib. libnameT

1

std::shared_ptr<T>&

clib.array. libnameT

1

Эта таблица показывает, как сконфигурировать тип элемента данных C++ T.

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

T

clib. libnameT

1

T*clib. libnameT

1

clib.array. libnameT

1
Фиксированные размерности: Введите числовой массив, такой как [5,2].
Переменные размерности: Введите массив строк названий параметра, таких как ["row","col"].

T[]

clib.array. libnameT

1
Фиксированные размерности
Переменные размерности

std::shared_ptr<T>

clib. libnameT

1

Перечислимые типы

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

Тип параметра C++

Эквивалентный тип MATLAB в libnameDIRECTIONSHAPE
T

clib. libnameT

"input"

1

C++ возвращает типЭквивалентный тип MATLAB в libnameSHAPE
T

clib. libnameT

1

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

clib. libnameT

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 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 [a] для 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. libnamefloat

double*

clib.array. libname'double'

bool*

clib.array. libnamebool

[a] MATLAB преобразует имена основных типов C++ к верхнему Camel-регистру.

Ввод

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

Тип C++

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

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

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

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

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

|

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте