После создания файла определения библиотеки define
использование libName
.mlxclibgen.generateLibraryDefinition
, вам придется изменить содержимое, чтобы включать функциональность в интерфейс. Используйте Live Editor, чтобы изменить файл. Для получения дополнительной информации смотрите, Задают Недостающую информацию для Подписей MATLAB.
Можно направить MATLAB, чтобы автозадать тип и форму определенного использования типов аргумента clibgen.generateLibraryDefinition
и clibgen.buildInterface
аргументы в виде пар имя-значение. Опции:
Обрабатывать весь const
символьные указатели в библиотеке как отключенные пустым указателем струны до, набор аргумент 'TreatConstCharPointerAsCString' к true
.
Чтобы обработать все объектные указатели в библиотеке как скаляры, установите аргумент 'TreatObjectPointerAsScalar' на true
.
Однако, когда вы подтверждаете определение библиотеки, вы можете получить ошибки о дублирующихся подписях MATLAB®. Чтобы разрешить эти ошибки, смотрите, Согласовывают Конфликты Подписи MATLAB.
После генерации и редактирования файла определения библиотеки, может быть две или больше функции или другие построения с идентичными подписями MATLAB. Чтобы проверять на этот конфликт, подтвердите файл определения. Например, для файла определения define
Ввод: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
Для получения дополнительной информации смотрите Шаблоны Функции и Функции членства Использования.
clibgen.buildInterface
| clibgen.generateLibraryDefinition