Поддерживаемые платформы: Windows ®, Linux ®, Mac
В этом примере показано, как создать общую библиотеку C++ из функции MATLAB ®. Созданную библиотеку можно интегрировать в приложение C++. В этом примере также показано, как вызвать общую библиотеку C++ из приложения C++. Для целевой системы не требуется лицензионная копия MATLAB.
В MATLAB проверьте код MATLAB, который требуется упаковать. Для этого примера откройте addmatrix.m расположен в .matlabroot\extern\examples\compilersdk\c_cpp\matrix
В командной строке 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На вкладке Приложения MATLAB (MATLAB Apps) в правой части раздела Приложения (Apps) щелкните стрелку. В разделе Развертывание приложения выберите Компилятор библиотеки.
Также можно открыть приложение компилятора библиотеки из командной строки MATLAB, введя:
libraryCompiler
В разделе «Тип» панели инструментов выберите «C++ Общая библиотека».
В окне проекта приложения компилятора библиотеки укажите файлы приложения MATLAB, которое необходимо развернуть.
В разделе «Экспортированные функции» на панели инструментов нажмите кнопку.![]()
В окне Добавить файлы перейдите к папке-примеру и выберите функцию, которую требуется упаковать. Щелкните Открыть (Open).
Функция добавляется в список экспортированных файлов функций. Повторите этот шаг, чтобы упаковать несколько файлов в одном приложении.
Для этого примера перейдите к и выбрать matlabroot\extern\examples\compilersdk\c_cpp\matrixaddmatrix.m.
В разделе Параметры упаковки (Packaging Options) панели инструментов выберите, следует ли включить программу установки MATLAB Runtime installer в созданное приложение, выбрав один из вариантов:
Среда выполнения, загруженная из Интернета - создание программы установки, которая загружает среду выполнения MATLAB и устанавливает ее вместе с развернутым приложением MATLAB. Можно указать имя файла установщика.
Среда выполнения, включенная в пакет - создание приложения, включающего установщик среды выполнения MATLAB. Можно указать имя файла установщика.
Примечание
При первом выборе этого параметра выводится запрос на загрузку установщика среды выполнения MATLAB.
Поле Имя библиотеки (Library Name) автоматически заполняется addmatrix в качестве имени пакетной общей библиотеки. Переименовать как libmatrix. Это же имя используется в реализации общей библиотеки.
Добавьте файлы MATLAB для создания примеров файлов драйверов C++. Несмотря на то, что файлы драйверов C++ не требуются для создания общих библиотек, они используются для демонстрации внедрения общей библиотеки API C++ mwArray с приложением драйвера.
В разделе «Образцы» выберите «Создать новый образец» и нажмите addmatrix.m. Откроется файл MATLAB для редактирования. Определите входные переменные, необходимые для приложения, сохраните файл и вернитесь в приложение компилятора библиотеки. Дополнительные сведения и ограничения см. в разделе Создание файла драйвера образца.
Выберите тип API для созданных общих библиотек C++. В разделе выбора API в нижней части выберите Создать интерфейс, использующий API mwArray. Дополнительные сведения см. в разделе Выбор API для общей библиотеки C++.
Можно настроить программу установки, настроить приложение и добавить дополнительные сведения о приложении следующим образом:
Сведения о библиотеке - сведения о развернутом приложении. Можно также настроить внешний вид приложения, изменив значок приложения и заставку. Созданная программа установки использует эту информацию для заполнения метаданных установленного приложения. См. раздел Настройка установщика.
Дополнительные параметры установщика - путь установки по умолчанию для созданного установщика и выбора пользовательского логотипа. См. раздел Изменение пути установки.
Файлы, необходимые для запуска библиотеки - дополнительные файлы, необходимые для запуска созданного приложения. Эти файлы включены в созданную программу установки приложения. См. раздел Управление необходимыми файлами в проекте компилятора.
Файлы, установленные для конечного пользователя - файлы, установленные в приложении.
См. раздел Указание файлов для установки с приложением
Чтобы создать упакованное приложение, щелкните Пакет.
В диалоговом окне «Сохранение проекта» укажите местоположение для сохранения проекта.
В диалоговом окне «Пакет» убедитесь, что выбрана опция «Открыть папку вывода по завершении процесса».
После завершения процесса упаковки проверьте сгенерированные выходные данные.
В целевой папке создаются три папки: for_redistribution, for_redistribution_files_only, и for_testing.
Дополнительные сведения о файлах, созданных в этих папках, см. в разделе Файлы, созданные после упаковки функций MATLAB.
PackagingLog.txt - Файл журнала, созданный MATLAB Compiler™.
compiler.build.cppSharedLibraryПримечание
Если автономное приложение уже создано с помощью приложения компилятора библиотеки, можно пропустить этот раздел. Однако если вы хотите знать, как создать общую библиотеку C++ из окна команд MATLAB с использованием программного подхода, следуйте этим инструкциям.
Сохраните путь к addmatrix.m файл, расположенный в .matlabroot\extern\examples\compilersdk\c_cpp\matrix
appFile = fullfile(matlabroot,'extern','examples','compilersdk','c_cpp','matrix','addmatrix.m');
Сохранить следующий код в примере файла с именем addmatrixSample1.m:
a1 = [1 4 7; 2 5 8; 3 6 9]; a2 = a1; a = addmatrix(a1, a2);
Создайте общую библиотеку C++ с помощью compiler.build.cppSharedLibrary функция. Используйте аргументы «имя-значение», чтобы добавить образец файла и указать имя библиотеки и API интерфейса.
buildResults = compiler.build.cppSharedLibrary(appFile,... 'LibraryName','libmatrix',... 'Interface','mwarray',... 'SampleGenerationFiles','addmatrixSample1.m');
compiler.build.Results объект buildResults содержит информацию о типе сборки, созданных файлах и параметрах сборки.
Этот синтаксис создает следующее в папке с именем 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.
readme.txt - текстовый файл, содержащий информацию о упаковке.
requiredMCRProducts.txt - текстовый файл, содержащий идентификаторы продуктов, необходимых для выполнения приложения в среде выполнения MATLAB.
unresolvedSymbols.txt - текстовый файл, содержащий информацию о неразрешенных символах.
Примечание
Созданная библиотека не включает среду выполнения MATLAB или программу установки.
Дополнительные параметры могут быть указаны в compiler.build с помощью одного или нескольких следующих аргументов «имя-значение».
'AdditionalFiles' - путь к дополнительным файлам для включения в общую библиотеку.
'AutoDetectDataFiles' - Флажок для автоматического включения файлов данных.
'DebugBuild' - Флаг для включения символов отладки.
'Interface'- интерфейс API, указанный как 'matlab-data' (по умолчанию) или 'mwarray'. Дополнительные сведения см. в разделе Выбор API для общей библиотеки C++.
'LibraryName'- имя созданной библиотеки.
'OutputDir' - путь к выходному каталогу, содержащему созданные файлы.
'SampleGenerationFiles'- образцы файлов MATLAB, используемые для создания образцов файлов библиотеки C++. Дополнительные сведения см. в разделе Пример создания файла драйвера.
'Verbose'- Флаг для отображения информации о ходе выполнения, указывающей на вывод компилятора в процессе построения.
После упаковки общих библиотек C++ их можно вызвать из приложения C++. Созданное приложение C++ использует образец кода драйвера C++, созданного во время упаковки. Код драйвера C++ вызывает общие библиотеки C++ и основан на примере файла MATLAB, выбранного на предыдущих этапах установки.
Эти шаги также объясняются в GettingStarted.html файл в for_redistribution_files_only папка. Перед запуском убедитесь, что установлена программа установки и настройки MATLAB Runtime и установлен компилятор C++.
Скопируйте и вставьте созданный файл кода драйвера C++ из for_redistribution_files_only\samples в папку for_redistribution_files_only создается при создании общей библиотеки.
Используйте системную командную строку для перехода к for_redistribution_files_only , в которую был скопирован созданный образец файла кода драйвера C++.
Скомпилировать и связать приложение с помощью mbuild в командной строке системы.
mbuild addmatrix_sample.cpp libmatrix.lib
В командной строке системы запустите приложение. Если на этапах упаковки использовался образец кода MATLAB, это приложение должно возвращать тот же вывод, что и код MATLAB.
addmatrix_sample.exe
2 8 14 4 10 16 6 12 18
deploytool | libraryCompiler | mcc