Чтобы интегрировать внешний код C/C + + с MATLAB®необходимо предоставить внешние файлы генератору кода. Эти файлы состоят из исходных файлов, заголовочных файлов, файлов объектов и файлов библиотеки, которые используются для создания сгенерированного кода.
Можно сконфигурировать сборку в командной строке, внутри функции или путем установки свойств объекта строения генерации кода. Укажите файлы в командной строке для быстрого и простого способа генерации кода. Когда необходимо предварительно сконфигурировать функцию для других проектов и развертываний кода, сконфигурируйте сборку в функции. Объект строения предоставляет стандартизированный набор свойств сборки. Можно также задать внешние файлы с помощью MATLAB Coder™ App или с помощью класса, производного от coder.ExternalDependency. Для получения дополнительной информации смотрите Разработка интерфейса для внешнего кода C/C + +.
Предположим, что вы хотите сгенерировать код для функции, которая использует coder.ceval вызов функции C myCFn. Внешний исходный код и заголовочные файлы для myCFn находится в папке C:\custom. Используйте эту команду:
codegen myMatlabFn C:\custom\myCFn.c C:\custom\myCFn.h
В этом примере показано, как сконфигурировать сборку для внешнего кода C/C + + из функции MATLAB ®. Сконфигурируйте сборку внутри функции, чтобы легче было интегрировать ее с другими проектами.
Предположим, что у вас есть функция MATLAB верхнего уровня, myFn:
function [out] = myFn(in) %#codegen y = mySubFn(in); out = y + 10; end
Эта функция вызывает другую функцию, mySubFn, который использует внешний код С foo.c. При помощи coder.updateBuildInfo и coder.cinclude, вы устанавливаете все необходимые зависимости внешнего кода изнутри mySubFn.
function [y] = mySubFn(x) %#codegen coder.cinclude('foo.h'); coder.updateBuildInfo('addSourceFiles', 'foo.c'); % Pre-initialize y to double type. y = 0; y = coder.ceval('foo',x); end
Можно сгенерировать код, содержащий mySubFn без необходимости конфигурировать дополнительные параметры сборки или задать входные входы внешних файлов в командной строке. Чтобы сгенерировать код для функции верхнего уровня myFn, введите:
codegen myFn -args {5} -report
Code generation successful: To view the report, open('codegen/mex/myFn/html/report.mldatx').
Настройте сборку путем установки свойств объекта строения генерации кода. С помощью этих свойств можно задать местоположения внешних файлов, пользовательский исходный код и другие параметры сборки.
| Свойство пользовательского кода | Описание |
|---|---|
|
|
Укажите код, который появится в верхней части каждого файла заголовка C/C + +, сгенерированного из вашего кода MATLAB. |
|
|
Укажите список директорий включения для добавления к пути включения при компиляции сгенерированного кода. Укажите абсолютный путь или путь относительно папки проекта. Если имя пути к папке содержит пространства, вы должны заключить его в двойные кавычки: cfg.CustomInclude = '"C:\Program Files\MATLAB\work"' |
|
| Укажите список статических библиотек или файлов объектов для связи с сгенерированным кодом. |
|
|
Укажите список исходных файлов для компиляции и связи с сгенерированным кодом. Процесс сборки ищет исходные файлы сначала в текущей папке, а затем в папках включения, которые вы задаете в |
|
|
Укажите код, который появится в верхней части сгенерированного исходного файла C/C + +, вне функции. Не задайте определение статической функции на С. |
Например, объявите автономный объект строения кода и задайте следующие свойства:
cfg = coder.config('lib'); cfg.CustomInclude = 'C:\custom\src C:\custom\lib'; cfg.CustomSource = 'cfunction.c'; cfg.CustomLibrary = 'chelper.obj clibrary.lib'; cfg.CustomSourceCode = '#include "cgfunction.h"';
Примените свойства в командной строке при помощи codegen команда со -config аргумент:
codegen -config cfg myMatlabFn
Откройте приложение MATLAB Coder App и перейдите к Generate Code шагу.
На странице Generate Code, чтобы открыть диалоговое окно Generate, щелкните стрелу Generate.![]()
Нажмите More Settings.
На вкладке Custom Code выберите настройки строения сборки. Щелкните Help для отображения информации о полях ввода.
codegen | coder.cinclude | coder.CodeConfig | coder.config | coder.ExternalDependency | coder.MexCodeConfig | coder.updateBuildInfo