Вызовите C/C++ Статическая Библиотечная функция из кода MATLAB

Этот пример показывает, как вызвать библиотечную функцию C/C++ из кода MATLAB®, который подходит для генерации кода.

Предположим, что у вас есть файл MATLAB absval.m, который содержит следующую функцию:

function y = absval(u) %#codegen
  y = abs(u);
end

Сгенерировать статическую библиотечную функцию C и вызвать его из кода MATLAB:

  1. Сгенерируйте библиотеку C для absval.m.

    codegen -config:lib absval -args {0.0} 

    Вот ключевые пункты об этой команде:

    • Опция -config:lib дает MATLAB Coder™ команду генерировать absval как статическую библиотечную функцию C.

      Выходной язык по умолчанию является C. Чтобы изменить выходной язык на C++, смотрите, Задают Язык для Генерации кода.

    • MATLAB Coder создает библиотеку absval.lib (или absval.a на Linus Torvalds' Linux®) и заголовочный файл absval.h в папке /emcprj/rtwlib/absval. Это также генерирует функции absval_initialize и absval_terminate в библиотеке C.

    • Опция -args задает класс, размер, и сложность входа u первичной функции на примере, как описано в Задают Входные свойства на примере в Командной строке.

  2. Запишите функцию MATLAB, чтобы вызвать сгенерированную библиотеку:

    %#codegen
    function y = callabsval
    
    % Call the initialize function before
    % calling the C function for the first time
    coder.ceval('absval_initialize');
    
    y = -2.75;
    y = coder.ceval('absval',y);
    
    % Call the terminate function after 
    % calling the C function for the last time
    coder.ceval('absval_terminate');
    Функция MATLAB callabsval использует интерфейс coder.ceval, чтобы вызвать сгенерированные функции C absval_initialize, absval и absval_terminate. Необходимо использовать эту функцию, чтобы вызвать функции C от сгенерированного кода. Для получения дополнительной информации смотрите, Вызывают Сгенерированные Функции C/C++.

  3. Преобразуйте код в callabsval.m к MEX-функции так, чтобы можно было вызвать библиотечную функцию C absval непосредственно от посдказки MATLAB.

    1. Сгенерируйте MEX-функцию с помощью codegen можно следующим образом:

      • Создайте объект настройки генерации кода для MEX-функции:

        cfg = coder.config

      • На платформах Microsoft® Windows® используйте эту команду:

        codegen -config cfg callabsval codegen/lib/absval/absval.lib codegen/lib/absval/absval.h
        По умолчанию эта команда создает, в текущей папке, MEX-функции под названием callabsval_mex

        На платформе Linux Линуса Торволдса используйте эту команду:

        codegen -config cfg  callabsval codegen/lib/absval/absval.a codegen/lib/absval/absval.h

    2. В посдказке MATLAB вызовите библиотеку C путем выполнения MEX-функции. Например, на Windows:

      callabsval_mex