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