clibgen.buildInterface

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

Описание

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

Примечание

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

Имя файла интерфейса libNameИнтерфейс, с определенным для платформы расширением файла. По умолчанию 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, period, затем нажмите 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, то имя включает полный или относительный путь к файлу.

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

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

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

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

Для получения дополнительной информации смотрите аргумент LibraryFiles в 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, то имя включает полный или относительный путь к файлу. Вспомогательный исходный файл должен содержать код С++.

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

Если библиотека полностью задана заголовками и .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, завершенных значением null, путем определения 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 команда. Если falseMATLAB игнорирует комментарии C++ и только генерирует документацию отображений типов MATLAB и C++.

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

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

Ограничения

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

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

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

Для получения дополнительной информации см. Раздел «Создание библиотечного интерфейса C++» и «Обзор содержимого».

Введенный в R2019a