После создания файла определения библиотеки define использование libName.mlxclibgen.generateLibraryDefinition, возможно, потребуется изменить содержимое для включения функциональных возможностей в интерфейс. Для изменения файла используйте интерактивный редактор. Дополнительные сведения см. в разделе Определение отсутствующей информации для сигнатур MATLAB.
Можно настроить MATLAB для автоматического определения типа и формы определенных типов аргументов с помощью clibgen.generateLibraryDefinition и clibgen.buildInterface аргументы пары имя-значение. Возможны следующие варианты:
Чтобы лечить всех const символьные указатели в библиотеке как строки C с нулевым окончанием, установите аргумент 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