Сгенерируйте MATLAB Data API C++ разделяемая библиотека и создайте приложение C++

Поддерживаемая платформа: Windows®, Linux®, Mac

То В этом примере показано, как создать C++, совместно использовало библиотеку из MATLAB® функция. Можно интегрировать сгенерированную библиотеку в приложение C++. Этот пример также показывает, как вызвать совместно использованную библиотеку C++ из приложения C++. Целевая система не требует, чтобы лицензированная копия MATLAB запустила приложение.

Создайте функции в MATLAB

В MATLAB исследуйте код MATLAB, который вы хотите упакованный. В данном примере открытый addmatrix.m расположенный в matlabroot\extern\examples\compilersdk\c_cpp\matrix.

 addmatrix.m

В командной строке MATLAB введите:

addmatrix([1 4 7; 2 5 8; 3 6 9], [1 4 7; 2 5 8; 3 6 9])

Выход:

 ans =
     2     8    14
     4    10    16
     6    12    18

Создайте C++ разделяемая библиотека Используя приложение Library Compiler

  1. На вкладке MATLAB Apps, на ультраправом из раздела Apps, кликают по стреле. В Application Deployment нажмите Library Compiler.

    В качестве альтернативы можно открыть приложение Library Compiler из командной строки MATLAB путем ввода:

    libraryCompiler

  2. В разделе Type панели инструментов нажмите C++ Shared Library.

    В окне проекта приложения Library Compiler задайте файлы приложения MATLAB, которое вы хотите развернуть.

    1. В разделе Exported Functions панели инструментов щелкнутьAdd exported function to the project.

    2. В окне Add Files просмотрите к папке в качестве примера и выберите функцию, которую вы хотите группировать. Нажмите Open.

    Функция добавляется к списку экспортируемых файлов функции. Повторите этот шаг, чтобы группировать несколько файлов в том же приложении.

    В данном примере перейдите к matlabroot\extern\examples\compilersdk\c_cpp\matrix и выберите addmatrix.m.

  3. В разделе Packaging Options панели инструментов решите, включать ли инсталлятор MATLAB Runtime в сгенерированное приложение путем выбора одной из опций:

    • Runtime downloaded from web — Сгенерируйте инсталлятор, который загружает MATLAB Runtime и устанавливает его наряду с развернутым приложением MATLAB. Можно задать имя файла инсталлятора.

    • Runtime included in package — Сгенерируйте приложение, которое включает инсталлятор MATLAB Runtime. Можно задать имя файла инсталлятора.

      Примечание

      В первый раз, когда вы выбираете эту опцию, вам предлагают загрузить инсталлятор MATLAB Runtime.

Задайте разделяемые настройки библиотеки

  1. Поле Library Name автоматически заполняется с addmatrix как имя упакованной разделяемой библиотеки. Переименуйте его как libmatrix. То же имя выполняется в реализации разделяемой библиотеки.

  2. В разделе Samples выберите Create New Sample и нажмите addmatrix.m.

    В файле MATLAB, который открывается, отредактируйте код, чтобы инициализировать a1 к ненулевому значению:

    a1 = [1 4 7; 2 5 8; 3 6 9]; % Initialize a1 here
    a2 = a1; % Initialize a2 here
    a = addmatrix(a1, a2);

    Сохраните файл и возвратитесь к приложению Library Compiler. Для получения дополнительной информации и ограничения, смотрите Демонстрационное Создание Файла Драйвера.

  3. Выберите тип API для совместно использованных библиотек сгенерированного C++. В разделе API selection в нижней части выберите Create interface that uses the MATLAB Data API. Для получения дополнительной информации смотрите Выбор API для C++ Разделяемая Библиотека.

Настройте приложение и его внешний вид

В приложении Library Compiler можно настроить инсталлятор, настроить приложение и добавить больше информации о приложении.

  • Информация о библиотеке Информация о развертываемом приложении. Можно также настроить внешний вид приложения путем изменения значка приложения и экрана-заставки. Сгенерированный установщик использует эту информацию, чтобы заполнить установленные метаданные приложений. Смотрите Настраивают Инсталлятор.

  • Additional installer options — Путь к стандартной установке для сгенерированного инсталлятора и пользовательского выбора логотипа. Смотрите Изменение Путь к Установке.

  • Files required for your library to run — Дополнительные требуемые для запуска сгенерированного приложения файлы. Эти файлы включены в сгенерированное установщиком приложения. Смотрите Управляют Необходимыми Файлами в Проекте Компилятора.

  • Files installed for your end user — Файлы, которые установлены с вашим приложением.

    Смотрите задают файлы, чтобы установить с приложением.

Группируйте приложение

По окончании выбрав ваши упаковочные опции, сохраняете свой проект Library Compiler и генерируете пакетное приложение.

  1. Нажмите Package.

    В диалоговом окне Save Project задайте местоположение, чтобы сохранить проект.

  2. В диалоговом окне Package проверьте, что Open output folder when process completes выбран.

    Когда упаковочный процесс будет завершен, исследуйте сгенерированный выход в целевой папке.

    • Сгенерированы три папки: for_redistribution, for_redistribution_files_only, и for_testing.

      Для получения дополнительной информации о файлах, сгенерированных в этих папках, смотрите Файлы, Сгенерированные После Упаковки функций MATLAB.

    • Файл журнала PackagingLog.html содержит упаковочные результаты.

Создайте C++ разделяемая библиотека Используя compiler.build.cppSharedLibrary

Примечание

Если вы уже создали совместно использованную библиотеку C++ с помощью приложения Library Compiler, можно пропустить этот раздел. Однако, если вы хотите знать, как создать совместно использованную библиотеку C++ из окна команды MATLAB с помощью программируемого подхода, следуйте этим инструкциям.

  1. Сохраните путь к addmatrix.m файл расположен в matlabroot\extern\examples\compilersdk\c_cpp\matrix.

    appFile = fullfile(matlabroot,'extern','examples','compilersdk','c_cpp','matrix','addmatrix.m');
  2. Сохраните следующий код в файле примера под названием addmatrixSample1.m:

    a1 = [1 4 7; 2 5 8; 3 6 9];
    a2 = a1;
    a = addmatrix(a1, a2);

  3. Дополнительные опции могут быть заданы в compiler.build команда при помощи одного или нескольких следующих аргументов name-value.

    • 'AdditionalFiles' — Путь к дополнительным файлам, чтобы включать в разделяемую библиотеку.

    • 'AutoDetectDataFiles' — Отметьте, чтобы автоматически включать файлы данных.

    • 'DebugBuild' — Отметьте, чтобы включить отладочные символы.

    • 'Interface'— Интерфейсный API в виде 'matlab-data' (значение по умолчанию) или 'mwarray'. Для получения дополнительной информации смотрите Выбор API для C++ Разделяемая Библиотека.

    • 'LibraryName'— Имя сгенерированной библиотеки.

    • 'OutputDir' — Путь к выходной директории, которая содержит сгенерированные файлы.

    • 'SampleGenerationFiles'— Файлы примера MATLAB раньше генерировали демонстрационные файлы библиотеки C++. Для получения дополнительной информации смотрите Демонстрационное Создание Файла Драйвера.

    • 'Verbose'— Отметьте, чтобы отобразить информацию о прогрессе, указывающую на выход компилятора во время процесса сборки.

  4. Создайте совместно использованную библиотеку C++ с помощью compiler.build.cppSharedLibrary функция. Используйте аргументы name-value, чтобы добавить файл примера и задать имя библиотеки.

    buildResults = compiler.build.cppSharedLibrary(appFile,...
    'LibraryName','libmatrix',...
    'SampleGenerationFiles','addmatrixSample1.m');

    compiler.build.Results объект buildResults содержит информацию о типе сборки, сгенерированных файлах и опциях сборки.

  5. Этот синтаксис генерирует следующие файлы в папке под названием libmatrixcppSharedLibrary в вашей текущей рабочей директории:

    • samples\addmatrixSample1_mda.cpp — Демонстрационный файл драйвера C++.

    • v2\generic_interface\libmatrix.ctf — Файл технологии компонентов, который содержит развертываемый архив.

    • v2\generic_interface\readme.txt — Текстовый файл, который содержит упаковочную информацию.

    • GettingStarted.html — Файл HTML, который содержит информацию об интеграции вашей разделяемой библиотеки.

    • mccExcludedFiles.log — Файл журнала, который содержит список любых функций тулбокса, которые не были включены в приложение. Для получения информации о неподдерживаемых функциях смотрите Ограничения MATLAB Compiler.

    • readme.txt — Текстовый файл, который содержит упаковку и интерфейсную информацию.

    • requiredMCRProducts.txt — Текстовый файл, который содержит идентификаторы продукта продуктов, требуемых MATLAB Runtime запустить приложение.

    • unresolvedSymbols.txt — Текстовый файл, который содержит информацию о неразрешенных символах.

    Примечание

    Сгенерированная библиотека не включает MATLAB Runtime или инсталлятор. Создать инсталлятор, использующий buildResults возразите, смотрите compiler.package.installer.

Реализуйте MATLAB Data API C++ разделяемая библиотека с приложением драйвера

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

Эти шаги также объяснены в GettingStarted.html файл. Перед запуском убедитесь, что вы, Установка и Конфигурирует MATLAB Runtime, и что вам установили компилятор C++.

  1. Скопируйте и вставьте сгенерированный файл кода драйвера C++ addmatrixSample1_mda.cpp от samples папка в v2\generic_interface папка создала, когда вы создали разделяемую библиотеку.

  2. Используйте системную командную строку, чтобы перейти к generic_interface папка, где вы скопировали демонстрационный файл кода драйвера C++.

  3. Скомпилируйте и соедините использование приложения mbuild в системной командной строке.

    mbuild addmatrixSample1_mda.cpp
  4. Запустите приложение от системной командной строки.

    addmatrixSample1_mda.exe

Примечание

Для получения информации о том, как получить массив структур, массив ячеек или вектор символов от feval вызовите, смотрите файлы subtractmatrix.m и subtractmatrix_mda.cpp в matlabroot\extern\examples\compilersdk\c_cpp\matrix.

Смотрите также

| | |

Похожие темы