在嵌入式系统上混合使用C和C ++

时间:2015-04-16 06:29:42

标签: c++ c interop accelerometer motion-detection

所以我遇到了以下问题: 我有一块可在FreeRTOS上运行的MEMS板,包括陀螺仪,加速度计和磁力计。

我无法更改任何现有代码(全部用C)。 现在我有一个用C ++编写的基本运动检测库,我用一些函数扩展了这个库(全部用C ++编写)。

我以为我可以使用C ++编译器编译所有内容,但是我收到了数百个错误。

我找到了一些解决方法如何在C ++中使用C函数,但我不知道如何在C里面使用C ++函数(或库)。 有可行的方法吗?我可以以一种简单的方式包装我的所有C ++代码吗?

我正在使用Keil uvision为我的嵌入式系统编译代码,以防重要。

1 个答案:

答案 0 :(得分:1)

C和C ++之间存在一些差异,可能会使编译器在某些代码上发现错误。例如,请参阅此主题的wikipedia page

我建议您将项目拆分为两个项目,一个是C中的RTOS和应用程序,另一个是运动检测库。然后你必须围绕你的C ++库API编写一个C包装器。 Here's a good SO post on writing a C wrapper for C++ code.

然后你必须link your RTOS + application project to your library,你compiled in your other uVision project

相关问题