Смешивание C и C ++ во встроенной системе

Итак, у меня возникла следующая проблема:
У меня есть MEMS-плата, которая работает на FreeRTOS и включает в себя гироскоп, акселерометр и магнитометр.

Я не могу изменить какой-либо существующий код (все в C).
Теперь у меня есть базовая библиотека обнаружения движения, написанная на C ++, и я расширил эту библиотеку некоторыми функциями (все на C ++).

Я думал, что могу просто использовать компилятор C ++ и компилировать все, но я получаю сотни ошибок.

Я нашел какое-то решение, как использовать функции C внутри C ++, но я не знаю, как использовать функции C ++ (или библиотеки) внутри C.
Есть ли возможный способ? Могу ли я как-нибудь обернуть весь мой код C ++ простым способом?

Я использую Keil Uvision для компиляции кода для моей встроенной системы на случай, если это важно.

1

Решение

Есть несколько различий между C и C ++, которые могут привести к тому, что компилятор наткнется на часть кода. Смотрите, например, страница википедии по теме.

Я бы предложил разделить ваш проект на два проекта: RTOS и приложение на C, а другая — библиотека обнаружения движения. Затем вы должны написать оболочку C вокруг API вашей библиотеки C ++. Вот хороший пост SO о написании оболочки C для кода C ++.

Тогда вам придется связать проект приложения RTOS + с вашей библиотекой, который ты скомпилировано в вашем другом проекте uVision.

1

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