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

JNI如何使用stl

    博客分类:
  • JNI
 
阅读更多

       在JNI中使用stl的东西,比如std::string,不是说你的文件是.cpp的然后NDK就会用g++来编译,这家伙根本就不管你的文件是c还是cpp。那么玄机在哪里呢?关键是你的Application.mk文件里面还得指定APP_STL

      

       例如:APP_STL := stlport_static ,规则如下:

# system - 使用默认最小的C++运行库,这样生成的应用体积小,内存占用小,但部分功能将无法支持
# stlport_static - 使用STLport作为静态库,这项是Android开发网极力推荐的
# stlport_shared - STLport 作为动态库,这个可能产生兼容性和部分低版本的Android固件,目前不推荐使用。
# gnustl_static - 使用 GNU libstdc++ 作为静态库
# 使用STLport作为静态库,这项是Android开发网极力推荐的

       这个问题真蛋疼啊,困扰了我半天,还好,工程在附件。

 

       编译过程如下:

 

     

dr@dr-OptiPlex-3010:~/workspace/StlTest/jni$ ~/android-ndk-r5b/ndk-build clean
Clean: jni_stltest [armeabi]
Clean: stdc++ [armeabi]
Clean: stlport_shared [armeabi]
Clean: stlport_static [armeabi]
dr@dr-OptiPlex-3010:~/workspace/StlTest/jni$ ~/android-ndk-r5b/ndk-build
Compile++ thumb  : jni_stltest <= jni_main.cpp
StaticLibrary  : libstdc++.a
Prebuilt       : libstlport_static.a <= <NDK>/sources/cxx-stl/stlport/libs/armeabi/
SharedLibrary  : libjni_stltest.so
Install        : libjni_stltest.so => libs/armeabi/libjni_stltest.so
dr@dr-OptiPlex-3010:~/workspace/StlTest/jni$

  

   

 

分享到:
评论

相关推荐

    NDK JNI开发例子代码2

    2. **Application.mk**:此文件用于设置全局的构建选项,例如APP_ABI(支持的CPU架构),APP_PLATFORM(最低Android版本),APP_STL(使用的C++标准库)等。 3. **Java代码**:通常包含一个或多个包含native方法...

    ndk自带的最简单的jni例子hello-jni

    `hello-jni`是NDK提供的一个基础示例,帮助开发者了解如何在Android中使用JNI技术。 `hello-jni`项目通常包含以下几个关键部分: 1. **Android.mk**: 这是一个Makefile,定义了本地库的构建规则。在这个文件中,...

    jni C调用java示例

    使用NDK编译工具链,我们可以在该文件中编写C代码来实现Java的本地方法。例如: ```c++ #include &lt;jni.h&gt; #include extern "C" JNIEXPORT jstring JNICALL Java_com_example_ndkdemo3_MainActivity_stringFromJNI...

    AS JNI nativce C 源码例子

    4. `test-libstdc++`:可能是测试C++标准库的使用,比如STL容器和算法。 5. `HelloComputeNDK`:可能是一个简单的计算任务示例,演示了如何使用NDK进行高性能计算。 6. `native-activity`:展示如何直接在原生C/C++...

    Android使用jni调用c++/c方法详解

    本文将详细讲解如何在Android应用中使用JNI来调用C++/C方法。 首先,我们需要准备Android NDK(Native Development Kit),这是一个用于开发Android原生应用程序的工具集,它提供了编译C和C++代码的能力,以便与...

    android NDK-JNI开发案例

    5. **C++支持**:从Android NDK r8版本开始,NDK支持C++,可以使用STL、C++11特性等。 6. **异常处理**:理解Java和C++之间的异常处理差异,学习如何在本地代码中捕获和抛出异常。 7. **多线程支持**:在本地代码中...

    jni代码资源

    `Application.mk`是项目级别的Makefile,通常用于设置全局编译选项,比如APP_STL(选择STL实现)、APP_ABI(目标CPU架构)等。 在实际应用中,这些文件可能构成了一个简单的JNI项目,实现了Java层调用C/C++代码计算...

    android五子棋JNI代码

    【Android五子棋JNI代码】涉及的是Android平台上使用Cocos2d-x框架开发的一个五子棋游戏的原生接口(JNI)部分。JNI,全称为Java Native Interface,是Java平台提供的一种技术,允许Java代码和其他语言写的代码进行...

    Android-使用NDK和JNI调整图片的亮度和对比度类似QQ离线头像显示灰使用mk编写脚本

    总结,通过结合使用NDK、JNI和Makefile,我们可以实现在Android应用中高效地调整图片的亮度和对比度,同时模拟出类似QQ离线头像的灰度效果。这种技术不仅适用于图片编辑应用,还可在其他需要高性能图像处理的场景中...

    是男人就下100层——JNI代码

    本项目"是男人就下100层"是一款基于Cocos2d-x框架的Android小游戏,其中涉及到JNI的使用,主要是为了实现高性能的计算或者利用C++库来增强游戏性能。 1. **Cocos2d-x框架**:Cocos2d-x是一个开源的、跨平台的游戏...

    JNI(c++与Java互调)cocos2d-x_3.x和android studio 3.0

    8. **优化与性能**:使用JNI的主要原因是提升性能,因此在C++代码中,注意优化算法,减少不必要的内存分配和释放,以及利用多线程提高计算密集型任务的执行效率。 总结,JNI在cocos2d-x与Android Studio结合开发中...

    Android Studio NDK编译动态库的三种方法

    APP_STL := c++_static ``` 3. 构建动态库:运行`ndk-build`命令在项目根目录下,这将根据`Android.mk`和`Application.mk`生成对应的.so库。 ### 方法二:CMakeLists.txt 1. **CMakeLists.txt**:从Android ...

    Android NDK移植jpeg-turbo库

    首先创建JNI接口,然后在C++侧实现这些接口,使用`JNIEXPORT`和` JNICALL`关键字标记函数。例如: ```java public class JpegTurboUtil { static { System.loadLibrary("jpeg-turbo"); } public native void ...

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

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

    Android应用源码之代码调用C++代码和C++代码调用代码-IT计算机-毕业设计.zip

    `Android.mk`定义了编译的目标、依赖项、编译选项等,而`Application.mk`则用于设置全局编译选项,如APP_ABI(应用支持的架构)和APP_STL(使用的C++运行时库)。 4. **JNI函数声明**:在Java类中,需要声明对应的...

    Android C++高级编程:使用NDK_中文-高清带目录

    3. **原生代码开发**:深入探讨C++在Android中的应用,如数据类型、指针操作、内存管理、异常处理、多线程以及STL容器的使用。 4. **性能优化**:讨论如何利用C++提升Android应用的性能,包括代码优化策略、内存...

Global site tag (gtag.js) - Google Analytics