`
leng_cn
  • 浏览: 298422 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

NDK编译时问题总结

 
阅读更多
ndk编译C++,提示找不到头文件(ndk-build error: string: No such file or directory)
在所在目录 工程/jni/Application.mk(即和Android.mk同级目录)
----------cut start------------------------------
# 标准库
APP_STL := gnustl_static----------cut end------------------------------
添加 APP_STL := gnustl_static
即可找到标准库

在工程目录下的jni文件夹下编写的c/c++代码在编译时,通常会遇到如下的几种类型错误:

1、Unresolved inclusion:<XXX>

2、syntax error

3、Function 'XXX' could not be resolved

4、Type 'XXX' could not be resolved

5、Symbol 'XXX' could not be resolved

6、Method 'XXX' could not be resolved

7、Invalid arguments 'Candidates are: ...'


错误原因:

大多数情况是因为相关头文件没有加入导致,也有一些是因为一些参数无效导致的(当然无效参数也可能是因为头文件未加入,见下述)。


相关错误解决方法——添加头文件:

错误内容一:

    1、Unresolved inclusion: <jni.h>、Unresolved inclusion: <stdio.h>、Unresolved inclusion: <malloc.h>、Unresolved inclusion: <Android/log.h>、...
    2、Function '__android_log_print' could not be resolved、Type 'JNIEnv' could not be resolved、Type 'jstring' could not be resolved、Type 'jclass' could not be  resolved、Function 'malloc' could not be resolved、Function 'memcpy' could not be resolved、Method 'FindClass' could not be resolved、Type 'jsize' could not be  resolved、Symbol 'NULL' could not be resolved、...

解决方法:

    右击项目 --> Properties --> 左侧C/C++ General --> Paths and Symbols --> 右侧Includes --> GNU C++(.cpp) --> Add

                                                                                                                                                                 | __>GNU C(.c)        __|

${NDKROOT}\platforms\android-18\arch-arm\usr\include
错误内容二:

    1、Unresolved inclusion: <iostream>、Unresolved inclusion: <fstream>、Symbol 'std' could not be resolved、..

    2、Type 'fstream' could not be resolved、Symbol 'in' could not be resolved、Method 'seekg' could not be resolved、Method 'read' could not be resolved、...

解决方法:

    添加路径(步骤见上述解决方法):

${NDKROOT}\sources\cxx-stl\gnu-libstdc++\4.8\include 、${NDKROOT}\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi\include

错误内容三:

    Invalid arguments 'Candidates are:void * malloc(?)'、Invalid arguments 'Candidates are:void * memcpy(void *, const void *, ?)'

解决方法:

    添加路径(步骤见上述解决方法):

${NDKROOT}\toolchains\arm-Linux-androideabi-4.8\prebuilt\windows\lib\gcc\arm-linux-androideabi\4.8\include




相关错误解决方法——符号替换:


有时编译时会遇到这样的错误提示:Invalid
arguments 'Candidates are:std::basic_istream<char,std::char_traits<char>> & read(char *, ?)',尽管我们添加了相应的头文件,但仍然有无效参数这样的错误,错误提示中的‘?’表示无效参数。

碰到这类错误,可以索引到对应函数(ctrl+点击该函数)read,查看函数定义中的参数类型,此函数索引到的头文件中的参数类型为streamsize,但使用时用到的long。

解决方法:


右击项目 --> Properties --> 左侧C/C++ General --> Paths and Symbols --> 右侧Symbols --> GNU C++(.cpp) --> Add

                                                                                                                                                              | __>GNU C(.c)        __|

Name的值:streamsize,Value的值:long

添加完成后,点击确定后,错误消失。
分享到:
评论

相关推荐

    iperf2 iperf3 Android平台 ndk编译指南,常见问题解决方法

    iperf 2 ,3 的android 平台移植笔记,ndk 选择,交叉编译工具链的编译和配置,编译结果的验证,常见错误的处理方法。工作实践中的总结。

    NDK学习总结

    如何配置NDK环境,配置环境中可能出现问题,如何编写NDK代码等等

    Android学习总结

    从Android环境搭建,到各个组件的介绍,以及ndk编译

    Android命令行下创建工程

    1 使用NDK中的工具将源c/c++代码编译为库的文件形式,具体的环境配置有总结。进入工程文件所在目录,命令为:$ $NDK/ndk-build ,可以看到生成文件.so的形式 2 仍然在此目录下,下面的编译需要产生build.xml文件,...

    JNI文档资料源码_2020_01_22

    【Android NDK 开发】Visual Studio 2019 使用 CMake 开发 JNI 动态库 ( 动态库编译配置 | JNI 头文件导入 | JNI 方法命名规范 ) 博客地址 : https://hanshuliang.blog.csdn.net/article/details/104068609 博客...

    深入Android应用开发 核心技术解析与最佳实践

    第13章全面地剖析了Android的编译系统,包括编译工具、映像文件编译、SDK编译、NDK编译和目标系统的配置等;第14章分析了Android系统的启动过程;第15章讲解了Android的系统管理原理,包含内存管理、应用管理、电源...

    深入Android应用开发 核心技术解析与最佳实践.z01

    第13章全面地剖析了Android的编译系统,包括编译工具、映像文件编译、SDK编译、NDK编译和目标系统的配置等;第14章分析了Android系统的启动过程;第15章讲解了Android的系统管理原理,包含内存管理、应用管理、电源...

    JNI文档资料源码_2020_02_14_3

    【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 ) 博客地址 : https://hanshuliang.blog.csdn.net/article/details/104322381 I...

    JNI文档资料源码_2020_02_14_2

    【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 ) 博客地址 : ...

    8.1 android 串口编程

    关于权限,我总结了下,主要有三点: 1、app 要有系统权限 在AndroidManifest.xml里加上 android:process=“system” android:sharedUserId=“android.uid.system” 不过这样的话,app就要放到源码里编译了。 2、 /...

    java8集合源码分析-M3U8Demo:一个android-app-demo集成ffmpeg实现了m3u8视频文件的批量转换

    开始cpp层开发,尝试使用ndk编译ffmpeg.so,尝试使用jni调用ffmpeg转码功能 2020年2月10日 开始制作最终版UI,结合前期完成的cpp层应用内核,制作第一版M3U8批量转换 2020年2月16日 发布第一版app 背景知识 M3U8 是 ...

    android开发资料大全

    命令行开发、编译、打包Android应用程序汇总大全 Android 动画效果二 Frame Animation 动画专题研究 Android新浪客户端开发教程(完整版)汇总大全 Android多媒体实例大汇集(源码,全) Android中利用画图类和线程...

    C++和Java互相调用实例

    C++和Java互相调用代码实例总结。项目工程实例使用AS创建,下载后可直接编译安装运行

    【推荐】超全的移动安全自学资料精编合集(43份).zip

    Android安全安全技术: 其他Android安全知识总结 Android安全开发基础: 开发基础常识 Android安全开发基础: 四大组件之活动(Activity) Android安全开发基础: 四大组件之服务 (Service) Android安全开发基础: 四大...

    Android-Notes:关注基础知识,打造优质Android博客,公众号[xfhy]的作者

    这里是写博客的地方,努力打造适合初中高级工程师能够看得懂的优质文章,如果想第一时间获取文章,欢迎关注我的公众号:xfhy,Android的路很长,我们一起走...安卓系统原始码解析三方库原理反编译Gradle NDK看法多进

    尼斯知识体系:不积跬步无以至千里,每天进步一点点,激情,自我调节,爱与分享

    知识体系总结 如果你感到委屈,证明你还有底线;如果你感到迷茫,证明你还有追求;如果你感到痛苦,证明你还有力气;如果你感到绝望,证明你还有希望;从某种意义上,你永远都不会被打倒,因为你还有你。 安卓 ...

    移动安全系列教学下载共43份.zip

    Android安全安全技术--22--其他Android安全知识总结.pdf Android安全安全技术--34--Emulator模拟器的配置和ROOT(终极版).pdf Android安全应用逆向--23--反编译classes.dex文件.pdf Android安全应用逆向--24--使用...

Global site tag (gtag.js) - Google Analytics