Генерация C/C++ Статические Библиотеки из кода MATLAB

Сгенерируйте статическую библиотеку C Используя приложение MATLAB Coder

Этот пример показывает, как сгенерировать статическую библиотеку C из кода MATLAB® с помощью приложения MATLAB Coder™.

В этом примере вы создаете функцию MATLAB, которая добавляет два числа. Вы используете приложение, чтобы создать проект MATLAB Coder и сгенерировать статическую библиотеку C для кода MATLAB.

Создайте функцию точки входа

В локальной перезаписываемой папке создайте файл MATLAB, mcadd.m, который содержит:

function y = mcadd(u,v) %#codegen
y = u + v;

Создайте тестовый файл

В той же локальной перезаписываемой папке создайте файл MATLAB, mcadd_test.m, который вызывает mcadd с входными параметрами в качестве примера. Входные параметры в качестве примера являются скалярами с типом int16.

function y = mcadd_test
y = mcadd(int16(2), int16(3));

Откройте приложение MATLAB Coder

На вкладке MATLAB Toolstrip Apps, под Code Generation, кликают по значку приложения MATLAB Coder.

Приложение открывает страницу Select Source Files.

Задайте исходные файлы

  1. На странице Select Source Files введите или выберите имя функции точки входа mcadd.

    Приложение создает проект с именем по умолчанию mcadd.prj в текущей папке.

  2. Нажмите Next, чтобы перейти к шагу Define Input Types. Приложение анализирует функцию для кодирования готовность генерации кода и проблемы. Если приложение идентифицирует проблемы, оно открывает страницу Review Code Generation Readiness, где можно рассмотреть и устранить проблемы. В этом примере, потому что приложение не обнаруживает проблемы, оно открывает страницу Define Input Types.

Входные Define типы

Поскольку C использует статический контроль типов, во время компиляции, MATLAB Coder должен определить свойства всех переменных в файлах MATLAB. Необходимо задать свойства всех входных параметров функции точки входа. Из свойств входных параметров функции точки входа MATLAB Coder может вывести свойства всех переменных в файлах MATLAB.

Задайте тестовый файл mcadd_test.m, который MATLAB Coder может использовать, чтобы автоматически задать типы для u и v:

  1. Введите или выберите тестовый файл mcadd_test.m.

  2. Нажмите Autodefine Input Types.

    Тестовый файл, mcadd_test.m, вызывает функцию точки входа, mcadd с входными типами в качестве примера. MATLAB Coder выводит, что вводит u, и v int16(1x1).

  3. Нажмите Next, чтобы перейти к шагу the Check for Run-Time Issues.

Проверяйте на проблемы во время выполнения

Шаг Check for Run-Time Issues генерирует файл MEX от ваших функций точки входа, запускает MEX-функцию и сообщает о проблемах. Этот шаг является дополнительным. Однако это - лучшая практика выполнить этот шаг. Можно обнаружить и зафиксировать ошибки времени выполнения, которые более трудно диагностировать в сгенерированном коде C.

  1. Чтобы открыть диалоговое окно Check for Run-Time Issues, кликните по стрелке Check for Issues.

    Приложение заполняет поле тестового файла с mcadd_test, тестовый файл, что вы раньше задавали входные типы.

  2. Нажмите Check for Issues.

    Приложение генерирует MEX-функцию. Это запускает тестовый файл, заменяющий вызовы mcadd с вызовами MEX-функции. Если приложение обнаруживает проблемы во время генерации MEX-функции или выполнения, это предоставляет предупреждающие сообщения и сообщения об ошибке. Кликните по этим сообщениям, чтобы перейти к проблематичному коду и устранить проблему. В этом примере приложение не обнаруживает проблемы.

  3. Нажмите Next, чтобы перейти к шагу Generate Code.

Сгенерируйте код С

  1. Чтобы открыть диалоговое окно Generate, кликните по стрелке Generate.

  2. В диалоговом окне Generate, набор Build type к Static Library (.lib) и Language к C. Используйте значения по умолчанию для других настроек конфигурации сборки проекта.

  3. Нажмите Generate.

    Приложение указывает на ту генерацию кода, за которой следуют. Это отображает исходные файлы MATLAB и сгенерированные выходные файлы на левой стороне страницы. На вкладке Variables это отображает информацию об исходных переменных MATLAB. На вкладке Target Build Log это отображает журнал сборки, включая предупреждения компилятора и ошибки. По умолчанию, в окне кода, отображения приложения файл исходного кода C, mcadd.c. Чтобы просмотреть различный файл, в Source Code или панели Output Files, кликают по имени файла.

    MATLAB Coder генерирует автономную статическую библиотеку mcadd C в папке codegen\lib\mcadd. Это генерирует минимальный набор операторов #include для заголовочных файлов, требуемых выбранной заменяющей библиотекой кода.

  4. Чтобы просмотреть отчет генерации кода, нажмите View Report.

  5. Нажмите Next, чтобы открыть страницу Finish Workflow.

Рассмотрите страницу рабочего процесса конца

Страница Finish Workflow указывает на ту генерацию кода, за которой следуют. Это предоставляет сводные данные проекта и ссылки на сгенерированный вывод.

Сгенерируйте статическую библиотеку C в командной строке

Этот пример показывает, как сгенерировать статическую библиотеку C из кода MATLAB в командной строке с помощью функции codegen.

  1. В локальной перезаписываемой папке создайте файл MATLAB, mcadd.m, который содержит:

    function y = mcadd(u,v) %#codegen
    y = u + v;

  2. Используя опцию config:lib, сгенерируйте файлы библиотеки C. Используя опцию -args, укажите, что первый вход является вектором 1-by-4 16-битных целых чисел без знака и что второй вход является скаляром с двойной точностью.

    codegen -config:lib mcadd -args {zeros(1,4,'uint16'),0}

    MATLAB Coder генерирует статическую библиотеку C с именем по умолчанию, mcadd и вспомогательными файлами в папке по умолчанию, codegen/lib/mcadd. Это генерирует минимальный набор операторов #include для заголовочных файлов, требуемых выбранной заменяющей библиотекой кода.