android.mk 包含boost,c++ 如何使用boost库(包括shared_ptr)与Android NDK和STLport

本文详细介绍了如何在Android NDK r4b版本中使用Boost v1.45.0的shared_ptr。通过修改编译标志、删除特定函数调用并提供缺失的异常处理部分,使得shared_ptr能够在不抛出异常的情况下正常运行。具体步骤包括在Android.mk文件中添加编译标志,修改boost库的源代码,以及为Android环境创建定制的bad_alloc实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这更多是一个答案,而不是一个问题,因为我想出来了,至少在干净的编译库。我的主要问题是让shared_ptr工作。

配料:

Boost v。1.45.0

NDK的版本r4b。

方向:

在您的Android.mk文件中添加:

LOCAL_CFLAGS += -DBOOST_EXCEPTION_DISABLE -D_STLP_NO_EXCEPTIONS -DOS_ANDROID -D_STLP_USE_SIMPLE_NODE_ALLOC

在stlport / stl / _string.h的第613行中删除对__stl_throw_length_error的调用。如果你喜欢,你可以使用_STLP_NO_EXCEPTIONS。

在第261行之后编辑boost / boost / smart_ptr / shared_ptr.hpp,以摆脱shared_ptr构造函数中对boost :: throw_exception的调用。我使用#ifndef BOOST_EXCEPTION_DISABLE围绕整个方法的主体。 (但见下面的答案。)

接下来,你需要提供一些缺失的部分。使用以下命令创建头文件:

#ifdef OS_ANDROID

#include

namespace std

{

struct bad_alloc : public exception { bad_alloc operator()(){}};

}

#endif

以及具有用于支持bad_alloc的精简异常类的源文件:

#ifdef OS_ANDROID

#include

namespace std

{

exception::exception() {}

exception::~exception() {}

const char* exception::what() const {}

}

#endif

包括头,无论你包括boost / shared_ptr.hpp。编译源代码并将其添加到库中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值