exponenta event banner

clibgen.buildInterface

Создание интерфейса с библиотекой C++ без файла определения

Описание

clibgen.buildInterface(InterfaceGenerationFiles,'Libraries',LibraryFiles) создает интерфейс MATLAB ® с библиотекой C++, определенной InterfaceGenerationFiles и LibraryFiles.

Примечание

Любые конструкторы классов, методы, элементы данных и функции в библиотеке, которые MATLAB не может определить автоматически, удаляются. Чтобы включить отсутствующие функциональные возможности, используйте двухшаговый рабочий процесс построения, clibgen.generateLibraryDefinition и build функции.

Имя файла интерфейса: libNameInterface, с расширением файла для конкретной платформы. По умолчанию libName является именем файла, указанного в InterfaceGenerationFiles.

Необходим поддерживаемый MATLAB компилятор C++. Необходимо построить интерфейс с помощью того же компилятора, который использовался для построения библиотеки C++.

clibgen.buildInterface(InterfaceGenerationFiles,'Libraries',LibraryFiles,'SupportingSourceFiles',SourceFiles) создает интерфейс с библиотекой, определенной несколькими файлами заголовков, исходными файлами и, при необходимости, файлами общей библиотеки.

пример

clibgen.buildInterface(InterfaceGenerationFiles) создает интерфейс с библиотекой, который полностью определен InterfaceGenerationFiles. Для построения интерфейса можно использовать любой поддерживаемый MATLAB компилятор C++.

Если библиотека включает файл общей библиотеки, необходимо указать 'Libraries' аргумент.

clibgen.buildInterface(InterfaceGenerationFiles,___,Name,Value) генерирует интерфейс, используя один или несколько аргументов пары имя-значение. Используйте эту опцию с любой из комбинаций входных аргументов в предыдущих синтаксисах.

Примеры

свернуть все

Копировать school.hpp файл заголовка в папку с возможностью записи H:\Documents\MATLAB\publisher.

copyfile(fullfile(matlabroot,'extern','examples','cpp_interface','school.hpp'),'.','f')

Построение интерфейса schoolInterface.dll.

clibgen.buildInterface("school.hpp")
Building interface file 'schoolInterface.dll'.
Interface file 'schoolInterface.dll' built in folder 'H:\Documents\MATLAB\publisher\school'.
To use the library, add the interface file folder to the MATLAB path.
1 constructs need further definition to be included in the interface. 
Use clibgen.generateLibraryDefinition to provide definitions.

Щелкните значок interface file folder для добавления интерфейса к пути.

Напечатать clib.school, точка, затем нажмите клавишу Tab, чтобы отобразить классы в библиотеке.

Отображение справки по библиотеке.

help clib.school
Classes contained in clib.school:
Person                         - clib.school.Person    Representation of C++ class Person
Teacher                        - clib.school.Teacher    Representation of C++ class Teacher
Student                        - clib.school.Student    Representation of C++ class Student

Сравните эту функциональность с выводом summary(defineschool) в окне «Опубликовать интерфейс в библиотеке C++ только для заголовка». Этот интерфейс не включает:

Functions
  string clib.school.getName(clib.school.Person)

Входные аргументы

свернуть все

Один или несколько файлов C++ для создания интерфейса, указанных как строковый массив, символьный вектор или массив ячеек символьных векторов. Если не в текущей папке или на вашем пути MATLAB, имя включает полный или относительный путь к файлу.

Для получения дополнительной информации см. аргумент InteriveGenerationFiles в clibgen.generateLibraryDefinition функция.

Пример: "sample.hpp"

Типы данных: char | string | cell

Одно или несколько имен файлов общей библиотеки, указанных как строковый массив, символьный вектор или массив ячеек символьных векторов. Использовать с 'Libraries' аргумент. Это значение требуется, за исключением случаев, когда библиотека полностью определена файлами, указанными в 'InterfaceGenerationFiles' и 'SupportingSourceFiles' аргументы.

Дополнительные сведения см. в аргументе LibrureFiles в clibgen.generateLibraryDefinition функция.

Например, запуск этого оператора в Windows ® создаетsampleInterface.dll использование myLib.lib в C:\myLib\ и записывает его во вложенную папку sample в текущей папке.

clibgen.buildInterface("sample.hpp","Libraries","C:\myLib\myLib.lib")

Типы данных: char | string | cell

Один или несколько исходных файлов C++, указанных как строковый массив, символьный вектор или массив ячеек символьных векторов. Использовать с 'SupportingSourceFiles' аргумент пары имя-значение. Поддерживаемые расширения файлов: .cpp и .cxx. Если не в текущей папке или на вашем пути MATLAB, имя включает полный или относительный путь к файлу. Поддерживающий исходный файл должен содержать код C++.

Дополнительные сведения см. в разделе «Какие файлы находятся в библиотеке?» в разделе «Советы».

Если библиотека полностью определена заголовком и .cpp исходные файлы, то общие библиотечные файлы не требуются.

Пример: "sample.cpp"

Типы данных: char | string | cell

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: clibgen.buildInterface("myHeader.hpp","Libraries","myHeader.lib","OutputFolder","C:\work");

Одна или несколько папок для включенных файлов заголовков, указанных как строковый массив, символьный вектор или массив ячеек символьных векторов. Каждое значение в IncludePath должен быть полным путем к папкам, включаемым во время компиляции заголовочных файлов.

Если файл основного заголовка содержит #include для файлов заголовков в различных папках, затем используйте IncludePath для указания этих путей.

Типы данных: char | string | cell

Имя папки, используемое для создания файла интерфейса, указанного как строковый скаляр или символьный вектор. Например, этот оператор создает myHeaderInterface.dll в C:\work\myHeader в Windows.

clibgen.buildInterface("myHeader.hpp","OutputFolder","C:\work")

Типы данных: char | string | cell

Созданное имя интерфейса, указанное как строковый скаляр или символьный вектор. Для интерфейсов, созданных из одного файла заголовка, значением по умолчанию является имя заголовка. Для нескольких файлов заголовка необходимо указать имя пакета в качестве допустимого имени MATLAB. Например, этот оператор создает mylibInterface файл библиотеки в подпапке mylib в текущей папке.

clibgen.buildInterface(["h1.hpp","h2.hpp"],"PackageName","mylib")

Типы данных: char | string | cell

Опция для отображения сообщений генерации, указанная как true или false. Когда true, clibgen.buildInterface отображает сообщения генерации в окне команд при построении интерфейса. Например, этот оператор создает h1Interface файл библиотеки в подпапке h1 и отображает сообщения в окне команд.

clibgen.buildInterface("h1.hpp","Verbose",true)

Дополнительные сведения см. в разделе Сообщения о неподдерживаемых типах.

Типы данных: logical

Спецификатор фигуры для указателей объектов, указанный как true или false. Если TreatObjectPointerAsScalar является true, то MATLAB обрабатывает все указатели объектов в библиотеке как скаляры, указывая SHAPE как 1. В противном случае форма указателя объекта неизвестна.

Типы данных: logical

Спецификатор формы и типа MATLAB для const указатели символов, указанные как true или false. Если TreatConstCharPointerAsCString является true, то MATLAB обрабатывает все const указатели символов в библиотеке как строки C с нулевым окончанием путем указания MLTYPE как string и SHAPE как nullTerminated. В противном случае тип MATLAB и форма const указатели символов неизвестны. Поддерживаются следующие типы указателей:

  • const char *

  • const wchar_t *

  • const char16_t *

  • const char32_t *

Типы данных: logical

Список определений макросов, используемых при анализе файлов заголовков, указанных как пустые, скалярная строка или вектор строк скалярных строк. Имя макроса содержит символы 1-9, a-z, A-Z и '_' и не может начинаться с цифры.

Типы данных: string

Список компенсаций макросов, используемых при анализе файлов заголовков, указанных как пустые, скалярная строка или вектор строк скалярных строк. Имя макроса содержит символы 1-9, a-z, A-Z и '_' и не может начинаться с цифры.

Типы данных: string

Возвращать ли необъектные массивы C, указанные как true или false. Если ReturnCArrays является true, то MATLAB возвращает массивы C (clib.array.*) для необъектных массивов C. Если false, то MATLAB возвращает числовые массивы MATLAB для необъектных массивов C.

Типы данных: logical

Создавать ли документацию из файлов C++, указанных как true или false. Если GenerateDocumentationFromHeaderFiles является true, то MATLAB генерирует документацию из комментариев в исходных файлах C++ для отображения с помощью MATLAB doc команда. Если false, то MATLAB игнорирует комментарии C++ и генерирует только документацию сопоставлений типов MATLAB и C++.

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

Типы данных: logical

Ограничения

Альтернативная функциональность

Двухэтапный процесс построения

Используйте clibgen.generateLibraryDefinition и build функции вместо clibgen.buildInterface для определения отсутствующих функциональных возможностей в интерфейсе.

Дополнительные сведения см. в разделе Создание интерфейса библиотеки C++ и просмотр содержимого.

Представлен в R2019a