Чтобы интегрировать внешний код 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