Il s'agit plus d'une réponse que d'une question, car j'ai trouvé la solution, du moins en ce qui concerne la compilation propre de la bibliothèque. Le principal problème pour moi était de faire fonctionner shared_ptr.
Ingrédients :
Boost v. 1.45.0
La version de STLport à http://www.anddev.org/viewtopic.php?p=29939 .
Version r4b du NDK.
Directions :
Dans votre fichier Android.mk, ajoutez :
LOCAL_CFLAGS += -DBOOST_EXCEPTION_DISABLE -D_STLP_NO_EXCEPTIONS -DOS_ANDROID -D_STLP_USE_SIMPLE_NODE_ALLOC
Supprimez l'appel à __stl_throw_length_error à la ligne 613 de stlport/stl/_string.h. Vous pouvez utiliser _STLP_NO_EXCEPTIONS si vous le souhaitez.
Editez boost/boost/smart_ptr/shared_ptr.hpp après la ligne 261 pour supprimer l'appel à boost::throw_exception dans le constructeur de shared_ptr. J'ai utilisé #ifndef BOOST_EXCEPTION_DISABLE tout autour du corps de la méthode. (Mais voyez la réponse ci-dessous).
Ensuite, vous devez fournir certaines pièces manquantes. Créez un fichier d'en-tête avec ce qui suit :
#ifdef OS_ANDROID
#include <exception>
namespace std
{
struct bad_alloc : public exception { bad_alloc operator()(){}};
}
#endif
et un fichier source avec une classe d'exception dépouillée pour supporter bad_alloc :
#ifdef OS_ANDROID
#include <exception>
namespace std
{
exception::exception() {}
exception::~exception() {}
const char* exception::what() const {}
}
#endif
Incluez l'en-tête là où vous incluez boost/shared_ptr.hpp. Compilez le source et ajoutez-le à votre bibliothèque.