Чтобы интегрировать ваш внешний код C/C++ с MATLAB®, необходимо предоставить внешние файлы генератору кода. Эти файлы состоят из исходных файлов, заголовочных файлов, объектных файлов и файлов библиотеки, которые используются, чтобы создать сгенерированный код.
Можно сконфигурировать сборку в командной строке в функции, или путем установки свойств объектов настройки генерации кода. Задайте файлы в командной строке для быстрого и простого способа сгенерировать код. Когда это необходимо, чтобы предварительно сконфигурировать функцию для других проектов и развертывания кода, сконфигурируйте сборку в функции. Объект настройки обеспечивает стандартизированный набор свойств сборки. Можно также задать внешние файлы при помощи Приложения MATLAB Coder™, или при помощи класса, выведенного от 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++, за пределами функции. Не задавайте статическое функциональное определение 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 и перейдите к шагу Generate Code.
На странице Generate Code, чтобы открыть диалоговое окно Generate, кликают по стрелке Generate.
Нажмите More Settings.
На вкладке Custom Code выберите свои настройки конфигурации сборки. Нажмите Help, чтобы отобразить информацию о полях записи.
codegen
| coder.CodeConfig
| coder.ExternalDependency
| coder.MexCodeConfig
| coder.cinclude
| coder.config
| coder.updateBuildInfo