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

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