MDK升级后的头文件冲突
//=====================================================================
//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文件即可,比如:
#include "stm32f10x.h" #include "usb_def.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资源,所以简单地如此包含了该头文件:
#include "usb.h"
但在对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",那只需要在代码中如此指出即可:
#include "../../../../../../DeviceCode/pal/COM/usb/usb.h"
更改之后编译,顺利通过,如图所示:
转载于:https://www.cnblogs.com/wodeyitian/archive/2011/06/17/2460227.html
MDK升级后的头文件冲突相关推荐
- 解决更新到os x10.11后openssl头文件无法找到的问题
os x从10.10更新到10.11后,原有代码编译报错,#include <openssl/ssl.h>等头文件无法找到: "openssl/ssl.h: No such fi ...
- MDK编译后生成bin文件占用FLASH大小说明
转自:http://blog.csdn.net/kuangdoushi/article/details/69499933 MDK编译程序完成后,如下所示: linking... Program Siz ...
- win 10升级后不能访问服务器文件夹,Win10打开某些文件夹出现“无法访问”的解决方法...
win10电脑自动更新后访问某一些文件夹时出现提示"无法访问拒绝访问",导致文件夹打开失败,让大家感到很烦恼,怎么办?这一般是由于权限设置不当造成的,接下来,下面详细讲述一下遇到这 ...
- 解决VC2015包含stdint.h头文件冲突问题
stdint.h是C99的标准,主要用于统一跨平台数据定义. MSVC中不带有这个头文件,直到VS2010. 在之前的版本里面,我们可以: (1)下载这个头文件 download a MS versi ...
- win 10升级后不能访问服务器文件夹,Win10系统文件夹无法访问拒绝访问怎么办?...
不知道大家是否遇到过,访问某些文件夹的时候,出现提示"无法访问拒绝访问该文件夹".那么,Win10系统文件夹无法访问拒绝访问怎么办呢?下面,我们就一起往下看看Win10系统文件夹无 ...
- winhttp和wininet头文件冲突
合并之后的文件winhttp.h /*++Copyright (c) Microsoft Corporation. All rights reserved.Module Name:winhttp.hA ...
- .h头文件 .lib动态链接库文件 .dll 动态链接库
.h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的. 附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件.如果要完成源代码的编译和链接,有头文件和lib就够 ...
- .h头文件 .lib库文件 .dll动态链接库文件关系
.h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的. 附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件.如果要完成源代码的编译和链接,有头文件和lib就够 ...
- Centos下GCC引用mysql头文件和库文件
1.安装mysql-server: yum install mysql-server 2.gcc连接mysql的库安装: yum -y install mysql-devel 安装后,头文件在/us ...
最新文章
- pip install numpy/pandas时报错的解决方法
- php 请求url 返回json,php解析请求url并返回json数据
- 在ASP.Net 2.0中实现多语言界面的方法
- cfd计算linux windows,CFD计算分析时常用的数值模拟方法 | 坐倚北风
- 两个SAP UI5脚手架应用加载性能的比较
- KDD走进阿里 数百专家聚集探讨产学研一体化
- 一个程序如何连接到外网_如何开发制作小程序?做一个电商带直播小程序
- RTSP/RTMP播放端录像不可忽视的几个设计要点
- leetcode —— 区间加法
- easypoi 导入失败返回错误文件_从Excel批量导入数据说到ForkJoin的原理
- 从M个数中随机等可能的取出N个的问题
- 使用XAML和SharpMap渲染一幅地图
- lj245a引脚功能图_干货|教你如何看懂单片机时序图
- 03-树2. Tree Traversals Again (25)
- 163的在线编辑器简析和配置使用
- C++/OpenGL 入门(1):关于VS2017 中OpenGL部分安装过程
- python基础五之for和while
- 海鸣威《离开为了更好的回来》 MV首播感心动耳
- Oracle Order by 按汉字拼音排序
- 剪辑视频怎么加音效 视频音效常用都有哪些类型
热门文章
- C语言应用笔记:C语言typedef关键字及其使用
- python导入模块报错_Python 导入上层目录模块报错
- 字符斜杠是合法常量吗_【面试秘籍】你对String的intern方法了解吗
- php 多图上传编辑器,ThinkPHP5整合LayUI编辑器图片上传
- 网络监控系统中如何选择工业交换机?
- 一号信令是什么?1号信令和7号信令的区别介绍!
- 【渝粤教育】电大中专药剂学基础知识 (3)作业 题库
- 【渝粤题库】广东开放大学 商务交际听说 形成性考核
- 基于E18-2G4U04B的ZigBee3.0无线数据抓包安装方法
- 浅谈工业无线遥控器的基本定义及原理