Можно создать интерфейс 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) |