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

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

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

Автозадайте аргументы

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

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

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

Однако, когда вы подтверждаете определение библиотеки, вы можете получить ошибки о дублирующихся подписях MATLAB®. Чтобы разрешить эти ошибки, смотрите, Согласовывают Конфликты Подписи MATLAB.

Согласуйте конфликты подписи MATLAB

После генерации и редактирования файла определения библиотеки, может быть две или больше функции или другие построения с идентичными подписями MATLAB. Чтобы проверять на этот конфликт, подтвердите файл определения. Например, для файла определения definelibnameВвод:

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

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

Смотрите также

|

Похожие темы