`

Android学习笔记——NDK中C++标准库、STL的配置;Include其他头文件

阅读更多
以下所有是基于Eclipse的,使用命令行的绕道。

1、STL的使用,以stlport为例
官方的说法是只需要在Application.mk文件中添加如下一行即可
APP_STL := stlport_static

即可,可是如果真只是这么做Eclipse中会提示找不到头文件!!!
还可以用GNU的标准库,参见ndk/docs/APPLICATION-MK.html文件中对APP_STL选项的说明。

找不到头文件的原因可能是Eclipse的代码提示功能在寻找头文件时可能并不会识别Application.mk中的配置。于是乎,还需要在工程的property中设置一下头文件所在路径。 看到第二行那个万恶的system路径了吧,那个不支持stl等功能的默认C++库的路径。。。。




附上自己实际使用的Application.mk文件
APP_ABI := x86 #只生成x86架构的CPU用的lib,要生成所有平台的可以改为all  
#APP_STL := stlport_static
NDK_TOOLCHAIN_VERSION=4.7 #使用GCC4.7
APP_STL := gnustl_static #GNU STL
APP_CPPFLAGS := -fexceptions -frtti #允许异常功能,及运行时类型识别
APP_CPPFLAGS +=-std=c++11 #允许使用c++11的函数等功能
APP_CPPFLAGS +=-fpermissive  #此项有效时表示宽松的编译形式,比如没有用到的代码中有错误也可以通过编译;使用GNU STL时不用此项std::string 居然编译不通过!!


2、添加其他头文件
cpp文件没试。只是添加头文件! 跟添加stl支持一样,要在工程属性添加头文件路径。不过上面那个不知道是不是只是给IDE看的。。。google作的一致性还不够啊。。。
好吧,于是乎,还要在Android.mk中添加头文件路径,如:

LOCAL_C_INCLUDES :=$(LOCAL_PATH) D:\cppHeaders\Include

重新声明下,需要改两个地方:
  • 1、在工程属性添加头文件路径
  • 2、在Android.mk的LOCAL_C_INCLUDES项中添加头文件路径

3、编译器抽风的时候。。。
原本明明编译通过的代码又报错。。。。果断直接删除obj文件夹下的文件重新编译。
Good luck!!
  • 大小: 126.3 KB
分享到:
评论

相关推荐

    Android 学习笔记——利用JNI技术在Android中调用、调试C++代码

    这篇“Android学习笔记——利用JNI技术在Android中调用、调试C++代码”将带你深入理解如何在Android应用中使用JNI来调用C++代码,以及如何进行调试。以下是对这一主题的详细阐述。 1. **JNI简介** JNI是Java平台的...

    《Android C++高级编程——使用NDK》_源码.zip

    《Android C++高级编程——使用NDK》提供了... 《Android C++高级编程——使用NDK》提供了移植、开发以及利用Android平台上的C++和其他原生代码所需要的知识和技能,以便于运行图形化的高级应用和更复杂的原生应用。

    Android C++高级编程使用NDK [ Pro Android C++ with the NDK ]书源码

    1. **C++在Android中的应用**:Android NDK提供了C++支持,使得开发者可以使用标准模板库(STL)、多线程、模板等C++特性,同时也可以利用JNI(Java Native Interface)与Java层进行通信。这在处理图形计算、物理...

    NDK里的include文件夹

    NDK中的`include`文件夹包含了大量用于本地化编程的头文件,这些头文件是C/C++标准库、Android特定的API以及系统库的定义。 当我们使用NDK进行独立编译时,可能会遇到找不到头文件的问题。这通常是因为编译环境没有...

    Android C++高级编程——使用NDK完整版

    Android拥有广大的用户群体,市场前景也很好,所以学习Android的人很多。但是因为Android很容易上手,如果只是单纯的学一些简单的东西很明显没有竞争力。所以必须学一点深层次的东西来提升自己的核心竞争力。第1章 ...

    安卓Android源码——代码调用C++代码和C++代码调用代码.zip

    本压缩包"安卓Android源码——代码调用C++代码和C++代码调用代码.zip"包含了关于如何在Android应用中使用JNI来实现Java与C++之间的双向调用的实例。 1. **Java调用C++代码** - 创建`Native`方法:在Java类中声明一...

    Android C++高级编程:使用NDK(完整版带书签).pdf

    接下来,书中详细讲解了Android NDK中的C++支持,包括C++11及更高版本的标准库、STL的使用、异常处理和RTTI。这部分内容有助于开发者掌握在Android平台上的现代C++编程技巧。 在深入探讨NDK编程时,作者会介绍JNI...

    Android NDK环境配置

    Android NDK环境配置是Android应用开发中的一个重要环节,它允许开发者使用C或C++编写高性能的原生代码,这些代码可以被编译成动态库并与Java应用一同打包成APK。NDK集成了交叉编译器,使得开发者能够针对不同的CPU...

    非常强大的eclipse中android ndk开发环境的配置说明

    本文档将详细介绍如何在Eclipse中配置Android NDK开发环境,并实现C/C++代码的自动编译以及通过Eclipse使用Ant生成JNI所需的头文件。配置流程包括Linux和Windows两种环境下的步骤。 #### 二、配置前提 确保以下工具...

    ndk使用std标准库.7z

    标题“ndk使用std标准库.7z”表明这个压缩包可能包含了关于如何在NDK环境下利用C++的Standard Template Library(STL),也就是std库,来编写代码的例子或者教程。描述中提到的关键点是“iostream”,“cout”,和...

    Android C++高级编程:使用NDK(高清完整带书签)电子书

    《移动开发经典丛书·Android C++高级编程:使用NDK》中我们将学习如何用AndroidNDK通过原生代码语言去实现自己的Android应用中对性能要求较高的部分。  《移动开发经典丛书·Android C++高级编程:使用NDK》介绍了...

    android-ndk 学习笔记

    本笔记主要探讨了Android NDK的使用、安装、配置以及在Android应用开发中的实践。 一、Android NDK简介 NDK为开发者提供了在Android平台上进行原生代码编程的能力,这包括对底层硬件的直接访问和优化,比如图形处理...

    android-ndk(android-ndk-r25b-windows.zip)

    6. **C++支持**:NDK支持C++11及更高版本,以及一些C++标准库,如STL,这使得C++开发者能在Android平台上更好地工作。 7. **LLVM/Clang支持**:NDK引入了LLVM/Clang作为替代GCC的编译器,提供了更好的性能和更现代...

    Android基础——Android Studio2.1配置NDK运行HelloWord

    在Android开发中,NDK(Native Development Kit)是一个重要的工具集,它允许开发者使用C和C++编写部分应用程序,以实现高性能、低级硬件访问或使用已有的C/C++库。这篇教程将聚焦于如何在Android Studio 2.1版本中...

    android-ndk(android-ndk-r23b-linux.zip)

    - **头文件**:包含了Android系统API和库的头文件,供开发者在C/C++代码中引用。 - **库文件**:预编译的库,如log、utils等,用于构建原生代码。 - **工具**:如ndk-build或cmake,用于管理构建过程。 - **示例和...

    Android Studio使用新的Gradle构建工具配置NDK环境

    本文将详细介绍如何在Android Studio中使用新的Gradle构建工具配置NDK环境,以便进行原生代码(C/C++)的开发。 首先,NDK是Android Native Development Kit的缩写,它允许开发者使用C和C++编写性能关键部分的代码...

    AndroidStudio配置NDK

    在Android开发中,有时我们需要使用到原生C/C++代码,这时就需要用到NDK(Native Development Kit),一个允许开发者使用C/C++编写Android应用程序的工具集。NDK的主要作用在于提供了一个接口,使得Java代码可以通过...

    android NDK 自动生成jni头文件

    Android NDK 提供了一個工具 javah,可以将 Java 代码中的 JNI 方法转换为 C/C++ 头文件,以便进行 JNI 的 C/C++ 端程序的开发。 javah 命令是 Android NDK 中的一个重要工具,主要用于将 Java 代码中的 JNI 方法...

    安卓Android源码——调用C++代码和C++代码调用源码.zip

    在安卓(Android)平台上,开发过程中有时需要利用C++代码来提升性能或利用已有的C++库。本资料包详细介绍了如何在Android项目中调用C++代码以及C++代码如何反向调用Java源码,这对于理解Android的Native层编程至关...

Global site tag (gtag.js) - Google Analytics