Определите интерфейс MATLAB для библиотеки C++

Полные определения

После создания файла определения библиотеки задайте libName.mlx использование clibgen.generateLibraryDefinitionВозможно, потребуется изменить содержимое, чтобы включить функциональность в интерфейс. Чтобы изменить файл, используйте Live Editor. Для получения дополнительной информации смотрите Задать отсутствующие сведения для сигнатур MATLAB.

Автоматическое определение аргументов

Можно направить MATLAB на автоматическое определение типа и формы конкретных типов аргументов, используя clibgen.generateLibraryDefinition и clibgen.buildInterface Аргументы пары "имя-значение". Опции:

  • Лечить все const указатели на символы в библиотеке в виде строк C, завершенных значением null, устанавливают аргумент 'TreatConstCharPointerAsCString' равным true.

  • Чтобы считать все указатели на объекты в библиотеке скалярами, задайте значение аргумента 'TreatObjectPointerAsScalar' true.

Однако при проверке определения библиотеки могут возникнуть ошибки о повторяющихся MATLAB® сигнатуры. Для устранения этих ошибок см. раздел «Согласование конфликтов сигнатур MATLAB».

Согласование конфликтов сигнатур MATLAB

После генерации и редактирования файла определения библиотеки могут быть две или более функций или других конструкций с одинаковыми сигнатурами MATLAB. Чтобы проверить этот конфликт, проверьте файл определения. Например, для файла определения задайте libname, тип:

definelibname

Если существует конфликт, MATLAB отображает ошибку со ссылкой на код в файле определения. Для разрешения конфликта выберите один из следующих вариантов:

  • Пересмотр defineArgument или defineOutput аргументы для создания уникальной подписи MATLAB. Конфликт возникает, когда существует несколько перегруженных функций, и вы задаете одни и те же параметры аргумента. См. раздел «Определение отсутствующей информации для сигнатур MATLAB».

  • Удалите одну из функций, комментируя определение конструкции. Конфликт может возникнуть, когда вы используете один из clibgen.generateLibraryDefinition аргументы пары "имя-значение" для автоматического преобразования всех регистров определенного типа. Можно также удалить перегруженную функцию.

После изменения файла определения перезапустите файл, чтобы подтвердить свои изменения.

Настройка содержимого

Проверьте схему переименования, используемую MATLAB, чтобы заменить недопустимые имена. Для получения дополнительной информации смотрите C++ Имена, которые являются недопустимыми в MATLAB.

Просмотрите автоматически сгенерированную справку. MATLAB автоматически копирует некоторые комментарии C++ в Description и DetailedDescription аргументы. Вы можете изменить или заменить это содержимое, которое является базисом doc команда для конечных пользователей.

Настройка имен шаблонов функций

Проверьте уникальные имена функции, сгенерированные из шаблонов функций в файле определения библиотеки. Для примера, A классов в этом заголовочном файле задается шаблон функции show и предоставляет экземпляры для типов int, double, и const A.

class A{}; // User type
template<typename T> void show(T a) {}
template void show<int>(int);
template void show<double>(double);
template<> void show<const A &>(const A& a){}

Если вы создаете интерфейс A для этой библиотеки MATLAB создает перегруженные функции с сигнатурами для этих экземпляров.

summary(defineA)
MATLAB Interface to libname Library

Class clib.libname.A

  Constructors:
    clib.libname.A(clib.libname.A)
    clib.libname.A()

  No Methods defined

  No Properties defined

Functions
clib.libname.show(int32)
clib.libname.show(double)
clib.libname.show(clib.libname.A)

Интерфейс C++ также генерирует уникальные имена функции на основе типов сигнатур. Чтобы просмотреть уникальные имена, используйте свойство TemplateUniqueName.

d = defineA;
d.Functions(1:3).TemplateUniqueName
ans = "clib.libname.show_int_"
ans = "clib.libname.show_double_"
ans = "clib.libname.show_AConst__"

Вы можете настроить это имя в файле определения библиотеки. Например, измените имя функции для объекта класса, clib.libname.show_AConst__. Перезапустите MATLAB и измените defineA.mlx. Найдите addFunction оператор для show_AConst__ и измените "TemplateUniqueName" аргумент пары "имя-значение". Замените show_AConst__ с новым именем, например showObjectA. Обновление "Description" аргумент пары "имя-значение" путем замены clib.libname.show с новым именем clib.libname.showObjectA и изменение текста справки для чтения Representation of C++ function show for class A.

"Description", "clib.libname.showObjectA    Representation of C++ function show for class A.");
help clib.libname.showObjectA
 clib.libname.showObjectA    Representation of C++ function show for class A.

    Inputs
      a              read-only clib.libname.A  

    No outputs

Для получения дополнительной информации см. Использование шаблонов функций функций и представителей.

См. также

|

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте