В этом примере показано, как использовать Функциональный блок C, чтобы вызвать методы класса C++ с помощью функции обертки C-стиля. В этом примере функции обертки C-стиля заданы в adder_cpp.h
, и реализованный в adder_cpp.cpp
. Чтобы запустить эту модель в качестве примера успешно, необходимо сконфигурировать MATLAB®, чтобы использовать компилятор C++.
Это может быть сделано с помощью mex -setup
команда и выбор компилятора C ++.
Чтобы позволить вызвать функций C от Функционального блока C, в модели, задают заголовочный файл и исходный файл в Параметрах конфигурации> Целевая панель Симуляции. В этой модели заголовочный файл пользовательского кода adder_cpp.h
объявляет adder
класс наряду с функциями члена класса. Заголовочный файл также содержит объявление функций обертки C-стиля, которые вызваны в Функциональном блоке C. Прототипы функций обертки C-стиля:
void *createAdder()
void deleteAdder(void *obj)
int adderOutput(void *obj, int increment)
где, void *obj
указатель объекта класса и int increment
вход, используемый функцией сумматора.
createAdder
функция вызвана в Секции кода Запуска Параметров блоков, чтобы создать объект Adder
класс. deleteAdder
функция вызвана в Оконечной Секции кода, чтобы разрушить созданный объект класса Сумматора. В Выходной Секции кода, adderOutput
функция вызвана. В этом примере порты Функционального блока C сконфигурированы можно следующим образом:
Объект класса Сумматора, obj
, возвратитесь createAdder
функция является персистентным символом Функционального блока C.
Вход Функционального блока C сопоставлен с increment
.
Выход Функционального блока C сопоставлен с возвращаемым значением adderOutput
функция.
model = 'slexCFunctionAdder'; open_system(model); sim(model); slcc('clearCustomCodeModules');