Можно создать интерфейс MATLAB® к разделяемым библиотекам на основе C++ 98 и обычно происходящего C++ 11 функций. Однако, если библиотека содержит следующие типы данных или функции языка, то функциональность не включена в интерфейс MATLAB к библиотеке. Вы можете смочь включать эту функциональность путем создания заголовочного файла обертки. Для получения дополнительной информации смотрите Примеры Обходного решения Ограничения C++.
Любой тип с размером, больше, чем 64 бита, например, long double
void *
Массивы типов символов (wchar_t
, char16_t
, char32_t
)
Указатели или массивы std::string
Ссылки на указатель в функции
Указатели или ссылки на перечисления
Члены справочных данных
std
интеллектуальные указатели кроме std::shared_ptr
Статические элементы данных
**
указатели на типы примитивов, такие как double**
. MATLAB поддерживает **
указатели на пользовательские классы, используемые в качестве функции или method типов параметра.
Многоуровневые указатели, такие как type
***
Указатель функции
Шаблоны классов с неполным или никакими инстанцированиями
union
Эти типы заданы в std
пространство имен поддерживается. Все другие типы в std
пространство имен не поддерживается.
std::string
, std::wstring
, std::u16string
, std::u32string
std::vector
std::shared_ptr
Если библиотека использует эти типы данных, то функциональность не включена в интерфейс 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, не поддерживаются. Этими методами является eq
, ne
<
>
, le
, и ge
.
Когда вы создаете библиотеку, содержащую эти функции или использование, отображения MATLAB:
Warning: Some C++ language constructs in the header file are not supported and not imported.
Примечание
Сохранение объектов C++ в MAT-файл не поддерживается.