exponenta event banner

Вызов методов класса C++ с использованием функции-оболочки в стиле C из функционального блока C

В этом примере показано, как использовать блок C Function для вызова методов класса C++ с использованием функции-оболочки в стиле C. В этом примере функции обертки в стиле C определены в adder_cpp.h, и реализовано в adder_cpp.cpp. Для успешного выполнения этой модели необходимо настроить MATLAB ® на использование компилятора C++.

Это можно сделать с помощью mex -setup и выберите компилятор C++.

Чтобы включить вызов функций C из блока C Function, в модели укажите файл заголовка и исходный файл на панели Configuration Parameters > Simulation Target. В этой модели файл заголовка пользовательского кода adder_cpp.h объявляет adder класс вместе с функциями-членами класса. Файл заголовка также содержит объявление функций оболочки в стиле Си, которые вызываются в блоке C Function. Прототипами функций обертки в стиле C являются:

  • void *createAdder()

  • void deleteAdder(void *obj)

  • int adderOutput(void *obj, int increment)

где, void *obj является указателем объекта класса, и int increment - вход, используемый функцией сумматора.

createAdder вызывается в разделе «Начальный код» окна «Параметры блока» для создания объекта Adder класс. deleteAdder вызывается в разделе Terminate Code для уничтожения созданного объекта класса Adder. В разделе «Код вывода» adderOutput вызывается функция. В этом примере порты функционального блока C конфигурируются следующим образом:

  • Объект класса «Сумматор», obj, возврат по createAdder функция является постоянным символом блока C Function.

  • Вход блока C Function отображается на increment.

  • Выходной сигнал блока C Function отображается на возвращаемое значение adderOutput функция.

model = 'slexCFunctionAdder';
open_system(model);
sim(model);
slcc('clearCustomCodeModules');