Andorid NDK 使用STL,以及 _alloc.h :_M_allocate出错处理

    最近,转到 android 平台进行开发。 做了一个native service,  编译的时候,发现不能正常使用STL, 经过一番折腾,总算是搞掂了。我使用的是android 4。

    error:  STL 头文件找不到 ?

     在Android.mk 增加  LOCAL_C_INCLUDES := ndk/sources/cxx-stl/stlport/stlport

           主要是指定 STL 头文件的位置。

   

    error: stlport/stlport/stl/_alloc.h:   error: undefined reference to 'std::__node_alloc::_M_allocate(unsigned int&)

    在Android.mk 增加  LOCAL_CFLAGS := -D_STLP_USE_NO_IOSTREAMS -D_STLP_USE_MALLOC

    这个解决办法并不完美,应该不能使用 STL的IOSTREAM。 有可能还会有其它的什么问题,需要多做测试。

    我是这样解决的: 当时查了一些资料没有头绪,后来受到一篇文章的影响,说是需要定义一个 -D_STLP_USE_SIMPLE_NODE_ALLOC,当然了,这个宏定义并没有解决我的问题。

我看了一下 _alloc.h 出错的地方

             #if !defined (_STLP_USE_NO_IOSTREAMS)

                      

                        xxx 出错的地方。

           #endif

于是我就 定义了 _STLP_USE_NO_IOSTREAMS,我并不需要使用 IOSTREAMS。 后来又报错了另一个地方:  

typedef __pthread_alloc __alloc_type;
#elif defined (_STLP_USE_NEWALLOC)
typedef __new_alloc __alloc_type;
#elif defined (_STLP_USE_MALLOC)
typedef __malloc_alloc __alloc_type;
#else
typedef __node_alloc __alloc_type;   ----- 出错。
#endif

于是,定义了 _STLP_USE_MALLOC 。 问题就解决了。




 



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值