Matlab с внешней функцией C ++: coder.ceval передает структуру функции

Я пытаюсь передать Structure из функции Matlab в Simulink во внешнюю функцию C ++, используя coder.ceval () и coder.cstructname (). Когда я пытаюсь запустить код на плате Arduino Due с помощью инструмента развертывания на аппаратном обеспечении в Simulink, я получаю ошибку:

error: invalid use of incomplete type 'struct MyStruct'
error: forward declaration of 'struct MyStruct'

Я использую пример кода из mathworks, но использую функцию c ++ вместо функции c:

Заголовок use_struct.h:

#include <tmwtypes.h>

typedef struct MyStruct
{
double s1;
double s2;
} MyStruct;

void use_struct(struct MyStruct *my_struct);

C ++ функция use_struct.cpp:

 #include <stdio.h>
#include <stdlib.h>
// #include "use_struct.h"  // Doesn’t work when I include it hereextern “C” void use_struct(struct MyStruct *my_struct)
{
double x = my_struct->s1;
double y = my_struct->s2;
}

Функция Matlab:

structVar.s1 = 1;
structVar.s2 = 2;

if strcmp(coder.target,'rtw'),coder.cinclude('use_struct.h');
coder.cstructname(structVar, 'MyStruct', 'extern');

coder.ceval('use_struct', coder.ref(structVar));

end

Мне нужно, чтобы это была функция C ++ для последующего кода. Однако я также попробовал это сделать с функцией c без внешней буквы «C», но она все равно не работает. Кто-нибудь может мне помочь с этой проблемой?

0

Решение

Я нашел решение. Мне пришлось включить заголовок c use_struct.h в use_struct.cpp также с:

extern "C"{
#include "use_struct.h"}
0

Другие решения


По вопросам рекламы [email protected]