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