C++ 手动立方体C到C++;包含FreeRTOS时项目转换失败
工具链是SW4STM32,gcc,处理器是STM32F303K8(核仁303K8),最小的测试项目,根本没有实际的用户代码。 如何转换ST CubeMX生成的项目的过程有很好的文档记录,而且显然是有效的。但是,当我在多维数据集中指定FreeRTOS时,链接器无法找到init函数MX_FreeRTOS_init()。函数原型包含在main.cpp中,定义存在于另一个源文件(freertos.c)中。这在C中工作,但是当将项目转换为C++时,链接器无法链接函数。 我做的C2C++转换如下:C++ 手动立方体C到C++;包含FreeRTOS时项目转换失败,c++,eclipse,linker,freertos,C++,Eclipse,Linker,Freertos,工具链是SW4STM32,gcc,处理器是STM32F303K8(核仁303K8),最小的测试项目,根本没有实际的用户代码。 如何转换ST CubeMX生成的项目的过程有很好的文档记录,而且显然是有效的。但是,当我在多维数据集中指定FreeRTOS时,链接器无法找到init函数MX_FreeRTOS_init()。函数原型包含在main.cpp中,定义存在于另一个源文件(freertos.c)中。这在C中工作,但是当将项目转换为C++时,链接器无法链接函数。 我做的C2C++转换如下: 将cc
- 将ccnature添加到.project文件
- 将main.c复制到main.cpp(&从生成中删除main.c)
- 在项目属性中将gcc编译器设置复制到g++中
- 将链接器脚本指向项目目录中的脚本
有什么建议吗?或者我必须跳过在多维数据集中指定FreeRTOS而全部手动完成吗?我也面临同样的问题。
因此,我建议将freertos.c文件重命名为freertos.cpp我也遇到了同样的问题。
因此,我建议将freertos.c文件重命名为freertos.cpp我对使用Atolic for stm32有同样的问题 通过在main.cpp中添加外部“C”来解决此问题
/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config();
void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */
/* USER CODE BEGIN PFP */
/* Private function prototypes -----------------------------------------------*/
#ifdef __GNUC__
/* With GCC, small printf (option LD Linker->Libraries->Small printf
set to 'Yes') calls __io_putchar() */
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
#ifdef __cplusplus
}
#endif
/* USER CODE END PFP */
我对stm32使用Atolic也有同样的问题 通过在main.cpp中添加外部“C”来解决此问题
/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config();
void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */
/* USER CODE BEGIN PFP */
/* Private function prototypes -----------------------------------------------*/
#ifdef __GNUC__
/* With GCC, small printf (option LD Linker->Libraries->Small printf
set to 'Yes') calls __io_putchar() */
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
#ifdef __cplusplus
}
#endif
/* USER CODE END PFP */
我建议一个C++的RTOS,例如免费的DRORTOS。(谷歌IT)< P>我建议C++的RTOS,例如自由DRORTOS。(谷歌it)