Можно создать 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 поддерживает **
указатели на пользовательские классы, используемые в качестве типов параметров функций или методов.
Многоуровневые указатели, такие как 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
конструктор
Перегруженные функции оператора
Неназванные пространства имен и классы
Макроконстанты
Глобальные переменные
Вариадные функции
Шаблоны функций с неполными экземплярами или без них
Создание объектов классов в 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) |