在Android NDK开发中,遇到了这个奇怪的问题
“Symbol 'NULL' could not be resolved”
如下图所示:
先看看我的JNI工程属性,里面有两个包含目录
首先,需要说明一点
NULL是在stddef.h头文件里面声明的
但是,当我打开工程时,发现stddef.h根本就没有声明NULL
原因是,它用了STLPort的stddef.h
路径:android-ndk-r10d\sources\cxx-stl\stlport\stlport\stddef.h
打开NDK的根目录,搜索stddef.h文件,你会发现,有很多个stddef.h,如下图所示
其中有些是包含了NULL声明的,比如
路径 :
android-ndk-r10d\platforms\android-3\arch-arm\usr\include\linux
路径 :
android-ndk-r10d\platforms\android-4\arch-arm\usr\include\linux
路径 :
android-ndk-r10d\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\lib\gcc\arm-linux-androideabi\4.9\include
…………
所以,接下来的事情就很简单了,
只要在工程属性中,添加以上其中一个可用的包含目录就可以了
如下图所示,注意顺序哦!!!
当然,有时候遇到“size_t”无法被识别,其它也是一样的道理。
size_t是在stddef.h头文件里面声明的
附上,我正在使用的配置:
E:\Developer\android-ndk-r10d\platforms\android-19\arch-arm\usr\include
E:\Developer\android-ndk-r10d\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\lib\gcc\arm-linux-androideabi\4.9\include
E:\Developer\android-ndk-r10d\sources\cxx-stl\system\include
E:\Developer\android-ndk-r10d\sources\cxx-stl\stlport\stlport
如果引入了头文件,还是不能解决问题,那么,应该就是工程出问题了~
一般是这样解决的,
1、先Close Project,退出Eclipse
2、把工程目录下的.cproject文件删除掉
3、再把.project文件里面关于“adt”和“cdt”项删除掉
4、重新打开Eclipse,Open Project
5、右击工程,“Android Tools”->“Add Native
Support”
然后,OK了~
接着