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