MDK升级后的头文件冲突
来源:互联网 发布:java开源商城系统 编辑:程序博客网 时间:2024/05/31 06:23
//=====================================================================
//TITLE:
// MDK升级后的头文件冲突
//AUTHOR:
// norains
//DATE:
// Friday 17-June-2011
//Environment:
// Keil MDK 4.2
// .NET Micro Framework Porting 4.1
//=====================================================================
因为在移植的时候,发现了不少MDK编译的一些问题,于是便想升级到最新版本,看看是否这些存在的问题已经被修复。可是没想到的是,在MDK 4.0可以顺利编译通过的.NET Micro Framework Porting Solution,到了MDK 4.2却是会发生编译错误,如图所示:
从图中可以看到,是usb_def.h文件出错,理由是某些类型没有被定义。像这种情形我们出来起来是很有经验的,十有八九是没有包含stm32f10x.h文件。也就是说,只要在包含usb_def.h之前包含stm32f10x.h文件即可,比如:
依照该思路,查找自己所建立的solution,才发现自己的代码中根本就没有使用到usb_def.h文件,而编译的时候却提示该文件有错!这究竟是怎么回事呢?
经过对比才发现,MDK 4.2版本的" /Keil/ARM/RV31/INC"路径下增加了USB的相关文件,而其中的"usb.h"就是追魁祸首!
为什么会如此呢?因为"usb.h"也是.NET Micro Framework Porting的一个代码文件,其位于"$(SPOCLIENT) /DeviceCode/pal/COM/usb"!而代码中为了使用.NET Micro Framework的USB资源,所以简单地如此包含了该头文件:
但在对solution进行编译的时候,首先搜索的是"/Keil/ARM/RV31/INC"路径,因此该"usb.h"便是"/Keil/ARM/RV31/INC/usb.h",而不是"$(SPOCLIENT) /DeviceCode/pal/COM/usb/usb.h"。
那应该如何解决这个问题呢?最简单的方法可能大家都能猜到,直接将"/Keil/ARM/RV31/INC/usb.h"给删掉!当然,这个方法是可行的,但却感觉并不是那么完美。谁知道删掉它,会不会对别的方面有影响呢?这只是一个治标而不治本的方法。
其实还有更好的方式,在包含的时候,指出其相对路径即可。比如我使用"usb.h"这个头文件的源代码是位于"$(SPOCLIENT) /DeviceCode/Targets/Native/STM32F10x/DeviceCode/USB/",根据之前所说的所需要的.NET Micro Framework Porting的"usb.h"是位于"$(SPOCLIENT) /DeviceCode/pal/COM/usb",那只需要在代码中如此指出即可:
更改之后编译,顺利通过,如图所示:
- MDK升级后的头文件冲突
- Eclipse升级后用javah命令生成不了JNI接口的h头文件的解决方法
- Windows下的基础头文件冲突
- 头文件冲突问题
- 代码冲突后的解决方法 org文件冲突文件
- Keil MDK配置----头文件问题
- 头文件包含冲突问题
- LwIP和FreeRTOS的头文件冲突问题
- MDK 升级到4600引发的问题
- Keil4如何组织arm-mdk头文件、库文件
- http强制升级为https http头文件 Content Security Policy: 升级不安全的请求
- VC下Winsock头文件冲突解决方法
- 头文件与命名冲突问题
- vc使用jsoncpp头文件冲突问题
- winhttp和wininet头文件冲突
- 【开发工具】[Jlink]:MDK Jlink(firmware update)固件升级后,导致MDK不能进入调试模式
- eclipse跟新代码解决冲突后,要把自动生成的冲突文件删掉!!
- cocoapods设置好后找不到头文件的解决方法
- 评析国内网络安全
- linux C执行命令并保存到string中
- 浅谈对单例模式的认识演变及代码实践
- 马宁的Windows Phone 7.1初体验——XNA与Silverlight集成
- TCPIP接口读卡器VC例子代码(2)
- MDK升级后的头文件冲突
- [转]10年软件开发教会我最重要的10件事
- USB 基本知识(四)----- usb全接触之usb function
- [sql server]查询备份文件大小
- 【转】欧盟物联网研究战略路线图(2)
- 最近的生活
- C#如何创建Execel文件
- TCPIP接口读卡器delphi例子代码
- 关于C#中窗体间传值的几种方法(感觉实际当中应用的较多)