Adb编译完成有一段时间了,整理一下这期间遇到的问题,免得下次又得百度谷歌,先说明,这些方法非原创,都是我在网上找得大家贡献出来的智慧。
1 刚开始编译的时候,显示一大堆系统文件错误。原因是SDK include文件夹中的sal.h和VC include文件夹中的sal.h冲突
解决方法:修改文件C:\Program Files\Microsoft Visual Studio 9.0\VC\include\crtdefs.h。将文件中的include<sal.h>改为 include “sal.h”,这样就会优先选择当前文件夹,防止发生冲突
2 snprintf函数并不是标准c/c++中规定的函数,但是在许多编译器中,厂商提供了其实现的版本。在gcc中,该函数名称就snprintf,而在VC中称为_snprintf。改成_snprintf就可以了
3 inline是c++的关键字,编译纯c语言的时候,需要将它改成_line
4 NULL同样是在c++中定义的,在c语言中要替换冲小写的null,或是#include <stddef.h>
5 有的机器还会包“sockaddr”:“struct”类型重定义类似的系统错误,可以在<windows.h>中#ifndefWIN32_LEAN_AND_MEAN前面加上#defineWIN32_LEAN_AND_MEAN 就OK了。因为编译的时候不是MFC工程,这个宏的意思就是不加载MFC模块
以上是vs2008出现的错误
下面是vs2010出现的错误
1 LINK : fatalerror LNK1123:转换到COFF 期间失败:文件无效或损坏
解决方法:右键->工程属性->配置属性->清单工具->输入和输出->嵌入清单,选择[否]