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

В этом примере показано, как использовать блок 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');