我目前正在尝试设置 CMock 以使用 MinGW 和 CMake 对 STM32 进行单元测试。在我的配置文件中,我设置了 :weak: 选项,这样生成的模拟就会给我弱功能。一个例子是:
#if defined (__IAR_SYSTEMS_ICC__)
#pragma weak HAL_TIM_IC_Init
#else
HAL_StatusTypeDef __attribute__((weak)) HAL_TIM_IC_Init(TIM_HandleTypeDef* htim);
#endif
HAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef* htim)
{
...
}
但是,当我编译时,它给了我对 HAL_TIM_IC_Init 错误的未定义引用。
如果我删除weak
属性,那么它不会给我未定义的引用错误。但是因为我需要重写HAL层提供的一些函数,所以需要将mocked库设为weak,否则会出现多个定义错误。
所以我的问题是为什么弱属性会导致未定义的引用错误,我该如何解决?