Итак, у меня возникла следующая проблема:
У меня есть MEMS-плата, которая работает на FreeRTOS и включает в себя гироскоп, акселерометр и магнитометр.
Я не могу изменить какой-либо существующий код (все в C).
Теперь у меня есть базовая библиотека обнаружения движения, написанная на C ++, и я расширил эту библиотеку некоторыми функциями (все на C ++).
Я думал, что могу просто использовать компилятор C ++ и компилировать все, но я получаю сотни ошибок.
Я нашел какое-то решение, как использовать функции C внутри C ++, но я не знаю, как использовать функции C ++ (или библиотеки) внутри C.
Есть ли возможный способ? Могу ли я как-нибудь обернуть весь мой код C ++ простым способом?
Я использую Keil Uvision для компиляции кода для моей встроенной системы на случай, если это важно.
Есть несколько различий между C и C ++, которые могут привести к тому, что компилятор наткнется на часть кода. Смотрите, например, страница википедии по теме.
Я бы предложил разделить ваш проект на два проекта: RTOS и приложение на C, а другая — библиотека обнаружения движения. Затем вы должны написать оболочку C вокруг API вашей библиотеки C ++. Вот хороший пост SO о написании оболочки C для кода C ++.
Тогда вам придется связать проект приложения RTOS + с вашей библиотекой, который ты скомпилировано в вашем другом проекте uVision.