Error: L6218E: Undefined symbol GUI_TOUCH_X_ActivateX (referred from gui_touch_driveranalog.o)
来源:互联网 发布:sqlserver视频教程下载 编辑:程序博客网 时间:2024/04/29 22:01
今天把MDK升级到了V4.73,原有的emWin相关应用工程遇到了标题的编译错误,之前升级V4.73没遇到这情况。查看了下v4.73的release notes发现emWin升级到了5.22a,怀疑跟这有关。
百度了下,网上有几个帖子,大概是在编译ucGui中遇到了同样的编译错误,但貌似没有解决方案。我提供下我的方法供参考吧,虽然我不是在ucGui碰到的,但思路是想通的。
从编译错误信息可以看到是在编译"gui_touch_driveranalog.o"时产生的问题,显然我的工程中没有gui_touch_driveranalog.c这个文件,查看工程的.map文件,发现是在一个触摸屏驱动的C源文件中用到了gui_touch_driveranalog.o中定义的方法,而这个gui_touch_driveranalog.o则是由通过emWin的Lib文件“提供”。
再回看编译信息字面,编译器没有找到"GUI_TOUCH_X_ActivateX","GUI_TOUCH_X_ActivateY" ,"GUI_TOUCH_X_MeasureX", "GUI_TOUCH_X_MeasureY"这四个东东。这四个函数是emWin定义的触摸屏的驱动接口(函数),在gui.h中可以看到:
/*********************************************************************** TOUCH: imports** Please note: The following functions are required by the module.* They need to be part of your application software (or rather, part* of the hardware-layer of your software).*/void GUI_TOUCH_X_ActivateX(void);void GUI_TOUCH_X_ActivateY(void);void GUI_TOUCH_X_Disable (void);int GUI_TOUCH_X_MeasureX (void);int GUI_TOUCH_X_MeasureY (void);
而这几个接口函数我之前肯定是实现过的,怎么编译器会找不到呢? 顺着思路打开GUI_X.c,发现原因了,这几个函数的定义是放在
#if GUI_SUPPORT_TOUCH // Used when touch screen support is enabled后的,显然这里的宏GUI_SUPPORT_TOUCH被定义为0了,然后下面的接口函数就被“忽略”了。
宏定义是在GuiConf.h中,把GUI_SUPPORT_TOUCH改为1就可以了。如果在多任务中使用了emWin,GUI_OS也要改为1。
/*********************************************************************
** Multi tasking support*/#define GUI_OS (0) // Compile with multitasking support/*********************************************************************** Configuration of touch support*/#define GUI_SUPPORT_TOUCH (1) // Support a touch screen (req. win-manager)总结下:我的工程是直接引用了keil安装目录下的GuiConf.h,安装完MDK v4.73,带的GuiConf.h中默认把GUI_SUPPORT_TOUCH设成了0,所以才会遇到标题的编译错误。
Ps: 编译ucGui遇到这个编译问题搜索来到的朋友,可以参考我的思路,寻找那四个接口函数的定义处(如果没有就要自己根据触摸屏去实现),自然可以解决问题。
- 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 main (referred from entry9a.o).
- Error: L6218E: Undefined symbol (referred from main.o)
- 解决Error: L6218E: Undefined symbol xxxx (referred from xxx.o)
- L6218E: Undefined symbol __ENTRY (referred from mmu.o).
- Error: L6218E: Undefined symbol Image$$ZI$$Limit (referred from sys_stackheap.o).错误的解决办法
- XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o).
- ..\OBJ\ucgui_ucos.axf: Error: L6218E: Undefined symbol ff_convert (referred from ff.o). ..\OBJ\ucgui
- MDK软件中解决Error: L6218E: Undefined symbol main (referred from rtentry2.o)
- Error: L6218E: Undefined symbol m_tmr (referred from rt_task.o) 的解决
- .\output\ucosII.axf: Error: L6218E: Undefined symbol OS_StrLen (referred from os_task.o).
- .\ethercat.axf: Error: L6218E: Undefined symbol appState (referred from stm32appl.o).
- XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o).
- XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.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).
- 07-EasyUI_layout的引入
- linux 下php 的安装及配置
- 494 - Kindergarten Counting Game
- 接口技术原理
- 手机设计11
- Error: L6218E: Undefined symbol GUI_TOUCH_X_ActivateX (referred from gui_touch_driveranalog.o)
- leetcode Interleaving String
- Java布局管理器
- windows下的host文件在哪里,有什么作用?
- 最大流
- 通过小项目学Android教程14 - 亲手做一个文件浏览器(5)
- 五大串口的基本原理
- 幂法和反幂法
- 458 - The Decoder