Можно создать интерфейс MATLAB® к разделяемым библиотекам на основе C++ 98 и обычно происходящего C++ 11 функций. Однако, если библиотека содержит следующие функции языка или какие-либо Неподдерживаемые Типы данных, то функциональность не включена в интерфейс MATLAB к библиотеке.
Перегруженные функции оператора
Создание объектов классов в пространстве имен std
Указатели или массивы std::string
Шаблоны функций и шаблоны классов с неполным или никакими инстанцированиями
Неразрешенные предописания
Пространства имен без имени и классы
перемещение конструктора
Передача nullptr
к функциям C++ или элементам данных
Передача и возврат текста Unicode® с C++
Массивы объектов класса C++
Функциональные объекты (функторы)
Параметры по умолчанию с направлением, заданным как OUT
.
Указатель, массив и участники справочных данных
Статические элементы данных
Указатели или ссылки на перечисления
Функции Variadic
Свойства с тем же именем в производном классе
Псевдонимы пространства имен. Используйте исходное имя пространства имен вместо этого.
Пространства имен, функции членства и свойства с именами C++, которые недопустимы в MATLAB
Многоуровневые указатели
void *
Указатель функции
Директивы препроцессору
Глобальные переменные
Битовые поля
Объединения
MATLAB не поддерживает перегрузки оператора и перемещает семантику в объекты интеллектуального указателя. Интеллектуальные указатели могут использоваться только через поддерживаемые функции членства, которые могут ограничить их эффективность.
const
read-only object C++ является объектом, объявленным с атрибутом const
C++. Вы можете получить такой объект как вывод функции или как элемент данных класса. В настоящее время MATLAB не отличает объекты только для чтения и позволяет эти операции, которые обычно не позволяются на C++.
Передача объекта к функциям с входными параметрами неconst
Вызов метода неconst на объекте
Изменение его свойств
В R2019b MATLAB будет ошибка, если вы выполните эти операции.
Все параметры передали, когда типы значения должны быть заданы в заголовочном файле. Если у вас есть предописание для типа, убедитесь, что MATLAB находит, что определение в одном из заголовочных файлов раньше создавало интерфейс. В противном случае MATLAB пропускает функциональность.
Например, в этом коде, MATLAB не может поддержать myFunc
, если вы не включаете заголовочный файл, задающий MyClass
.
class MyClass; double myFunc(MyClass);
Объект исключения C++ библиотеки не доступен в MATLAB. Однако пользовательские сообщения об исключениях доступны.