我查看了一下android的ndk目录,其中并没有stdarg.h这个头文件,而在<android.log.h>中却包含了这个头文件,而且编译没有任何问题,而如果我们自己编写的代码中包含了类似于<vector>这样的头文件,则编译的时候会报没有这个文件或文件夹的错误。请问这是为什么?我刚接触c和c++不久,对此不太了解。希望大侠解释一下!
解决方案 »
- java如何把int,按4位一取,转换成16进制输出?
- 救助,在地图上绘制自己的图片,移动的时候怎么跟着显示
- 如何修改item中子TextView的显示颜色
- 请教skia绘制path的问题。
- 新手级问题
- 如何做出优秀的UI?
- 在Android上开发的service如何开机自动运行.
- Android源码获取问题:repo init -u git://~ 然后就什么都没有,哪位可以告诉我该怎么办,跪谢!
- jni loadLibrary Cannot load library: find_library[1201]: 问题求解答
- 在华为手机上获取通讯录联系人为什么会出现要GLOBAL_SEARCH权限?
- ArrayAdapter的运用问题 在线等
- [有点急吧]Android修改assets文件夹中的文件问题
找到目录
编译时 -I 加进去就行了
不过我估计是因为你的MK文件中
LOCAL_C_INCLUDES :=
这句没有优先把需要的头文件路径包含进去.
请问你的NDK是在什么环境中搭建的呢?
android/log.h中的源代码70行是#include <stdarg.h>.你是指这个吗?
stdarg.h是C语言中C标准函式库的标头档,如果你下载了完整的NDRr5(我的是r5)该文件在NDK主目录下的sources\cxx-stl\stlport\stlport下和\sources\cxx-stl\gnu-libstdc++\include\tr1下.
还有如果你是用Cygwin搭建的环境那么也会在Cygwin相关目录下.如果你系统还装了VS系列的IDE,那么也会存在stdarg.h这个文件.
而#include <>中的<>是指优先通过系统环境变量PATH下去找,然后再从NDK编译器指定的INCLUDE路径中去找.如果你系统中环境变量所指的地方存在stdarg.h文件,你编译没有报错那是正常的.因为它的确找到了这个头文件.
如果你想在android的ndk中使用STL中的<vector>
请先在和Android.mk同级的目录下建立Application.mk文件,然后再加入如下语句.
APP_STL := gnustl_static就可以了.如果还报找不到vector,那你就在LOCAL_C_INCLUDES :=
中指明路径.我的路径是在NDKr5\sources\cxx-stl\gnu-libstdc++\include和NDKr5\sources\cxx-stl\stlport\stlport下.
哦!谢谢啊!看了你的回复,我明白很多了!我的编译环境是windows下结合Cygwin搭建的android_ndk开发环境。ndk的版本是r4,但是我的ndk的sources目录下只有一个cpufeatures的文件夹。我是需要自己下载sources目录下需要的资源吗?还是r4的版本就是这样啊?还有就是ndk编译时的include路径是在哪里设置的,我是说android_ndk默认的include路径是在哪里设置的。还有它的库文件和lib文件等的设置。比如说我想使用一个第三方的库,那我只需要把相应的头文件,lib文件和库文件放到对应的目录下就可以使用了吗?那编译出来的apk运行在android手机上时能找到这个第三方库吗?如果你知道,麻烦你回复我。谢谢!
好!谢谢你的回复!我明白了好多!以后有什么地方不明白,还要向你请教啊!我ndk刚刚接触,还有很多地方不太懂。