Android NDK 调用c++ stl 模板库(修改android.mk文件)

Android NDK支持STL的一些注意事项
Android NDK从r5b版本开始有官方支持的STL了,有一个crystax版本早已经支持。官方的支持有两个版本一个是gnu的,一个是stlport。如果你需要在你的NDK程序中使用STL,那么需要在Application.mk文件中添加一个选项,就是APP_STL := stlport_static。 其中APP_STL的取值有以下四种:
    system --> 系统默认的最小支持的C++运行时库
    stlport_static --> 以静态链接的方式使用stlport版本的STL
    stlport_shared --> 以动态链接的方式使用stlport版本的STL
    gnustl_static  --> 以静态链接的方式使用gnu版本的STL

如果你和我一样并没有使用Android.mk和Application.mk,而是使用Code::Blocks或者Visual studio 2010,那么在配置环境时,如果需要STL的支持,那么就需要注意自己要指定stl的包含路径。链接就根据需要自己链接不同的版本。请注意,stlport有静态链接和动态链接两种方式,而gnu的仅有静态链接方法。

另外一个需要注意的就是官方提供的这个stlport版本不支持RTTI和异常,换言之,如果你使用了stlport版本的STL,则不能使用-fexceptions和-frtti这两个编译选项。
====================================================================================================================================
1  在需要调用模板库的文件前包含头文件:

   #include <iostream>
  #include <vector>
 
  此时编译可能不过,需要在android.mk文件内添加:
  
LOCAL_C_INCLUDES :=   /home/administrator/android-ndk-r5b/sources/cxx-stl/stlport/stlport     (ndk安装路径下的stl库)


 2  在 mk 文件前加入:

   APP_STL  :=  stlprot_static    (模板库以静态库的方式添加)

  ....
  LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib  -llog \
 /home/administrator/android-ndk-r5b/sources/cxx-stl/stlport/libs/armeabi/libstlport_static.a

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值