少なくともライブラリをきれいにコンパイルする限り、私はそれを理解したので、これは質問というよりも答えです。私にとっての主な問題は、shared_ptrを機能させることでした。
材料:
ブーストv。1.45.0
http://www.anddev.org/viewtopic.php?p=29939にあるSTLportのバージョン。
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の呼び出しを削除します。メソッドの本体全体で#ifndefBOOST_EXCEPTION_DISABLEを使用しました。(ただし、以下の回答を参照してください。)
次に、不足している部品をいくつか提供する必要があります。次のヘッダーファイルを作成します。
#ifdef OS_ANDROID
#include <exception>
namespace std
{
struct bad_alloc : public exception { bad_alloc operator()(){}};
}
#endif
そして、bad_allocをサポートするために削除された例外クラスを持つソースファイル:
#ifdef OS_ANDROID
#include <exception>
namespace std
{
exception::exception() {}
exception::~exception() {}
const char* exception::what() const {}
}
#endif
boost / shared_ptr.hppを含める場合は常に、ヘッダーを含めます。ソースをコンパイルしてライブラリに追加します。