这更多是一个答案,而不是一个问题,因为我想出来了,至少在干净的编译库。我的主要问题是让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。编译源代码并将其添加到库中。
本文详细介绍了如何在Android NDK r4b版本中使用Boost v1.45.0的shared_ptr。通过修改编译标志、删除特定函数调用并提供缺失的异常处理部分,使得shared_ptr能够在不抛出异常的情况下正常运行。具体步骤包括在Android.mk文件中添加编译标志,修改boost库的源代码,以及为Android环境创建定制的bad_alloc实现。

1151

被折叠的 条评论
为什么被折叠?



