Для интеграции внешнего кода 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, который использует внешний код C 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 и перейдите к шагу Создать код.
На странице «Создать код», чтобы открыть диалоговое окно «Создать», щелкните стрелку «Создать».![]()
Щелкните Дополнительные параметры.
На вкладке Пользовательский код выберите параметры конфигурации сборки. Нажмите кнопку Справка, чтобы просмотреть информацию о полях ввода.
codegen | coder.cinclude | coder.CodeConfig | coder.config | coder.ExternalDependency | coder.MexCodeConfig | coder.updateBuildInfo