.\output\ucosII.axf: Error: L6218E: Undefined symbol OS_StrLen (referred from os_task.o).
2014-11-02 16:19
811 查看
在移植ucosII的时候出现了这样的一个错误 Error: L6218E:Undefined symbol OS_StrLen (referred from os_task.o).,一般来说,大家都知道这个是由于这个函数没有定义造成的,可能是没有引入.h头文件或.c的源文件造成的,可是由于编译不成功,不知道这个函数是在哪个文件定义的。后来终于发现是在ucos_ii.h的文件里有对这个函数的定义,其定义原型如下
#if (OS_EVENT_NAME_EN > 0u) || (OS_FLAG_NAME_EN > 0u) || (OS_MEM_NAME_EN > 0u) || (OS_TASK_NAME_EN > 0u)
INT8U OS_StrLen (INT8U *psrc);
#endif
哦,原来是要OS_EVENT_NAME_EN、OS_FLAG_NAME_EN、OS_MEM_NAME_EN、OS_TASK_NAME_EN这四个寄存器的值都清零之后,该函数才有定义。而这四个寄存器是在os_cfg.h的文件里定义的,因此只需把里面的#define OS_TASK_NAME_EN 1u
#define OS_FLAG_NAME_EN 1u
#define OS_MEM_NAME_EN 1u
#define OS_MEM_NAME_EN 1u
变成
#define OS_TASK_NAME_EN 0u
#define OS_FLAG_NAME_EN 0u
#define OS_MEM_NAME_EN 0u
#define OS_MEM_NAME_EN 0u
即可,就不会再出现上述错误了。
#if (OS_EVENT_NAME_EN > 0u) || (OS_FLAG_NAME_EN > 0u) || (OS_MEM_NAME_EN > 0u) || (OS_TASK_NAME_EN > 0u)
INT8U OS_StrLen (INT8U *psrc);
#endif
哦,原来是要OS_EVENT_NAME_EN、OS_FLAG_NAME_EN、OS_MEM_NAME_EN、OS_TASK_NAME_EN这四个寄存器的值都清零之后,该函数才有定义。而这四个寄存器是在os_cfg.h的文件里定义的,因此只需把里面的#define OS_TASK_NAME_EN 1u
#define OS_FLAG_NAME_EN 1u
#define OS_MEM_NAME_EN 1u
#define OS_MEM_NAME_EN 1u
变成
#define OS_TASK_NAME_EN 0u
#define OS_FLAG_NAME_EN 0u
#define OS_MEM_NAME_EN 0u
#define OS_MEM_NAME_EN 0u
即可,就不会再出现上述错误了。
相关文章推荐
- .\output\ucosII.axf: Error: L6218E: Undefined symbol OS_StrLen (referred from os_task.o).
- ..\OBJ\ucgui_ucos.axf: Error: L6218E: Undefined symbol ff_convert (referred from ff.o). ..\OBJ\ucgui
- XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o).
- 编译错误:XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o).
- XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o).
- Error: L6218E: Undefined symbol m_tmr (referred from rt_task.o) 的解决
- freertos.axf: Error: L6218E: Undefined symbol xTaskGetSchedulerState (referred from delay.o).
- STM32_TEST.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_md.o).
- .\output\stm32f103.axf: Error: L6218E: Undefined symbol __aeabi_assert (referred from mqtt.o).
- XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o).
- MDK错误 Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_hd.o). 解决方法
- .\Obj\uCOSDemo.axf: Error: L6218E: Undefined symbol LCD_Fast_DrawPoint (refe
- .\Obj\uCOSDemo.axf: Error: L6218E: Undefined symbol LCD_Fast_DrawPoint (refe
- 解决Error: L6218E: Undefined symbol xxxx (referred from xxx.o)
- Error: L6218E: Undefined symbol GUI_TOUCH_X_ActivateX (referred from gui_touch_driveranalog.o)
- Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_hd.o)
- Error: L6218E: Undefined symbol (referred from main.o)
- STM32_TEST.axf: Error: L6218E: Undefined symbol SystemInit
- L6218E: Undefined symbol __ENTRY (referred from mmu.o).
- Error[Pe020]: identifier "OS_TASK_TMR_PRIO" is undefined D:\Stm32_ucosII_demo_yang\OS_uCOS_II\core\o