Можно создать интерфейс MATLAB® к 64-битным разделяемым библиотекам на основе C++ 98 и обычно происходящего C++ 11 функций. Однако, если библиотека содержит следующие типы данных или функции языка, то функциональность не включена в интерфейс MATLAB к библиотеке. Вы можете смочь включать эту функциональность путем создания заголовочного файла обертки. Для получения дополнительной информации смотрите Примеры Обходного решения Ограничения C++.
Любой тип с размером, больше, чем 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 к библиотеке и сообщения отображений MATLAB как:
Did not add member 'methodName' to class 'ClassName' at HeaderFile.h:290. 'long double' is not a supported type.
Чтобы просмотреть эти сообщения, используйте 'Verbose' опция в clibgen.generateLibraryDefinition или clibgen.buildInterface функции.
move конструктор
Перегруженные функции оператора
Пространства имен без имени и классы
Макро-константы
Глобальные переменные
Функции Variadic
Шаблоны функций с неполным или никакими инстанцированиями
Создание объектов классов в std пространство имен, включая пользовательские классы.
Семантика интеллектуального указателя. Только std::shared_ptr поддерживается. MATLAB не поддерживает перегрузки оператора, семантику перемещения и функции членства в определении класса интеллектуального указателя, который может ограничить их эффективность. Вместо этого std::shared_ptr<T> ведет себя как тип T в MATLAB. Введите T может быть передан как вход для std::shared_ptr<T>, и введите T получен, как выведено для std::shared_ptr<T>.
Псевдонимы пространства имен. Используйте исходное имя пространства имен вместо этого.
Когда вы создаете библиотеку, содержащую эти функции или использование, отображения MATLAB:
Warning: Some C++ language constructs in the header file are not supported and not imported.
Примечание
Сохранение объектов C++ в MAT-файл не поддерживается.
MATLAB не поддерживает создание классы MATLAB, которые наследовали класс интерфейса C++.
MATLAB не поддерживает операторы реализации путем определения этих присоединенных функций.
Операция | Метод, чтобы задать |
|---|---|
a < b | lt(a,b) |
a > b | gt(a,b) |
a <= b | le(a,b) |
a >= b | ge(a,b) |
a ~= b | ne(a,b) |
a == b | eq(a,b) |
a(s1,s2,...,sn) | subsref(a,s) |
a(s1,...,sn) = b | subsassign(a,s,b) |
b(a) | subsindex(a) |