JNI如何使用stl

       在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$

  

   

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值