Этот пример показывает, как вызвать библиотечную функцию C/C++ из кода MATLAB®, который подходит для генерации кода.
Предположим, что у вас есть файл MATLAB absval.m
, который содержит следующую функцию:
function y = absval(u) %#codegen y = abs(u); end
Сгенерировать статическую библиотечную функцию C и вызвать его из кода MATLAB:
Сгенерируйте библиотеку C для absval.m
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
на примере, как описано в Задают Входные свойства на примере в Командной строке.
Запишите функцию 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');
callabsval
использует интерфейс coder.ceval
, чтобы вызвать сгенерированные функции C absval_initialize
, absval
и absval_terminate
. Необходимо использовать эту функцию, чтобы вызвать функции C от сгенерированного кода. Для получения дополнительной информации смотрите, Вызывают Сгенерированные Функции C/C++.Преобразуйте код в callabsval.m
к MEX-функции так, чтобы можно было вызвать библиотечную функцию C absval
непосредственно от посдказки MATLAB.
Сгенерируйте MEX-функцию с помощью codegen
можно следующим образом:
Создайте объект настройки генерации кода для MEX-функции:
cfg = coder.config
На платформах Microsoft® Windows® используйте эту команду:
codegen -config cfg callabsval codegen/lib/absval/absval.lib codegen/lib/absval/absval.h
callabsval_mex
На платформе Linux Линуса Торволдса используйте эту команду:
codegen -config cfg callabsval codegen/lib/absval/absval.a codegen/lib/absval/absval.h
В посдказке MATLAB вызовите библиотеку C путем выполнения MEX-функции. Например, на Windows:
callabsval_mex