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