在嵌入式系统上混合使用 C 和 C++
Mixing C and C++ on an embedded system
所以我遇到了以下问题:
我有一个在 FreeRTOS 上运行的 MEMS 板,包括陀螺仪、加速度计和磁力计。
我无法更改任何现有代码(全部在 C 中)。
现在我有一个用 C++ 编写的基本运动检测库,我用一些函数(全部在 C++ 中)扩展了这个库。
我以为我可以只使用 C++ 编译器编译所有内容,但我遇到了数百个错误。
我找到了一些如何在 C++ 中使用 C 函数的解决方案,但我不知道如何在 C 中使用 C++ 函数(或库)。
有可行的方法吗?我能以某种方式以一种简单的方式包装我所有的 C++ 代码吗?
我正在使用 Keil uvision 为我的嵌入式系统编译代码以防万一。
C 和 C++ 之间存在一些差异,可能会使编译器在某些代码上出错。例如,请参阅关于此主题的 wikipedia page。
我建议你把你的项目分成两个项目,一个是RTOS和C语言的应用程序,另一个是运动检测库。然后你必须围绕你的 C++ 库编写一个 C 包装器 API。 Here's a good SO post on writing a C wrapper for C++ code.
那你就得link your RTOS + application project to your library, which you compiled in your other uVision project.
所以我遇到了以下问题: 我有一个在 FreeRTOS 上运行的 MEMS 板,包括陀螺仪、加速度计和磁力计。
我无法更改任何现有代码(全部在 C 中)。 现在我有一个用 C++ 编写的基本运动检测库,我用一些函数(全部在 C++ 中)扩展了这个库。
我以为我可以只使用 C++ 编译器编译所有内容,但我遇到了数百个错误。
我找到了一些如何在 C++ 中使用 C 函数的解决方案,但我不知道如何在 C 中使用 C++ 函数(或库)。 有可行的方法吗?我能以某种方式以一种简单的方式包装我所有的 C++ 代码吗?
我正在使用 Keil uvision 为我的嵌入式系统编译代码以防万一。
C 和 C++ 之间存在一些差异,可能会使编译器在某些代码上出错。例如,请参阅关于此主题的 wikipedia page。
我建议你把你的项目分成两个项目,一个是RTOS和C语言的应用程序,另一个是运动检测库。然后你必须围绕你的 C++ 库编写一个 C 包装器 API。 Here's a good SO post on writing a C wrapper for C++ code.
那你就得link your RTOS + application project to your library, which you compiled in your other uVision project.