Сгенерируйте общую библиотеку API C++ mwArray и создайте приложение 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 разделе панели инструментов нажмите.

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

    В Samples разделе выберите Create New Sample и нажмите addmatrix.m. Файл MATLAB откроется для редактирования. Определите входные переменные как необходимые для вашего приложения, сохраните файл и вернитесь к Library Compiler приложению.Для получения дополнительной информации и ограничений смотрите Пример создания файла драйвера.

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

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

Можно настроить инсталлятор, настроить приложение и добавить дополнительные сведения о приложении следующим образом:

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

  • Additional installer options - путь установки по умолчанию для сгенерированного установщика и выбора пользовательского логотипа. См. раздел «Изменение пути установки».

  • Files required for your library to run - дополнительные файлы, необходимые для запуска сгенерированного приложения. Эти файлы включены в созданную программу установки приложения. См. «Управление необходимыми файлами в проекте компилятора».

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

    См. «Указание файлов для установки с приложением»

Упаковать приложение

  1. Чтобы сгенерировать упакованное приложение, нажмите Package.

    В диалоговом окне «Сохранение проекта» укажите местоположение для сохранения проекта.

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

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

    • В расположении целевой папки генерируются три папки: for_redistribution, for_redistribution_files_only, и for_testing.

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

    • PackagingLog.txt - Файл журнала, сгенерированный MATLAB Compiler™.

Создание общей библиотеки C++ с помощью compiler.build.cppSharedLibrary

Примечание

Если вы уже создали автономное приложение с помощью приложения 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. Создайте общую библиотеку C++ с помощью compiler.build.cppSharedLibrary функция. Используйте аргументы имя-значение, чтобы добавить образец файла и задать имя библиотеки и API интерфейса.

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

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

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

    • samples\addmatrixSample1_mwarray.cpp - Образец файла драйвера C++.

    • GettingStarted.html - HTML, содержащий информацию об интеграции вашей общей библиотеки.

    • libmatrix.cpp - файл исходного кода C++.

    • libmatrix.def - Файл определения модуля, который предоставляет компоновщику информацию о модуле.

    • libmatrix.dll - файл библиотеки динамических ссылок.

    • libmatrix.exports - Экспортирует файл, который содержит все нестатические имена функции.

    • libmatrix.h - файл заголовка C++.

    • libmatrix.lib - Импорт файла библиотеки.

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

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

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

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

    Примечание

    Сгенерированная библиотека не включает MATLAB Runtime или инсталлятор.

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

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

    • 'AutoDetectDataFiles' - Флаг для автоматического включения файлов данных.

    • 'DebugBuild' - Флаг для включения отладки символов.

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

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

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

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

    • 'Verbose'- Флаг для отображения информации о прогрессе, указывающей на выход компилятора во время процесса сборки.

Реализуйте общую библиотеку API C++ mwArray с приложением драйвера

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

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

  1. Скопируйте и вставьте сгенерированный файл кода драйвера C++ из for_redistribution_files_only\samples папка в for_redistribution_files_only папка, созданная при создании общей библиотеки.

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

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

    mbuild addmatrix_sample.cpp libmatrix.lib
  4. В командной строке системы запустите приложение. Если вы использовали образец кода MATLAB в шагах упаковки, это приложение должно вернуть тот же выход, что и код MATLAB.

    addmatrix_sample.exe
    2 8 14
    4 10 16
    6 12 18
    

См. также

| |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте