这更多是一个答案,而不是一个问题,因为我想出来了,至少在干净的编译库。我的主要问题是让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。编译源代码并将其添加到库中。