Esto es más una respuesta que una pregunta, porque lo he descubierto, al menos en cuanto a la compilación limpia de la biblioteca. El principal problema para mí fue trabajar con shared_ptr.Cómo usar la biblioteca de impulso (incluyendo shared_ptr) con Android NDK y STLport
Ingredientes:
Boost v 1.45.0
La versión de STLport en http://www.anddev.org/viewtopic.php?p=29939..
Versión r4b del NDK.
llegar:
En el archivo de complemento Android.mk:
LOCAL_CFLAGS += -DBOOST_EXCEPTION_DISABLE -D_STLP_NO_EXCEPTIONS -DOS_ANDROID -D_STLP_USE_SIMPLE_NODE_ALLOC
quitar la llamada a __stl_throw_length_error en la línea 613 de STLport/STL/_string.h. Puede usar _STLP_NO_EXCEPTIONS si lo desea.
Edite boost/boost/smart_ptr/shared_ptr.hpp después de la línea 261 para deshacerse de la llamada a boost :: throw_exception en el constructor shared_ptr. Usé #ifndef BOOST_EXCEPTION_DISABLE en todo el cuerpo del método. (Pero vea la respuesta a continuación.)
A continuación debe proporcionar algunas piezas faltantes. Crear un archivo de cabecera con lo siguiente:
#ifdef OS_ANDROID
#include <exception>
namespace std
{
struct bad_alloc : public exception { bad_alloc operator()(){}};
}
#endif
y un archivo fuente con una clase de excepción reducidos al mínimo, para apoyar bad_alloc:
#ifdef OS_ANDROID
#include <exception>
namespace std
{
exception::exception() {}
exception::~exception() {}
const char* exception::what() const {}
}
#endif
Incluir el encabezado donde quiera que estés incluyendo realce/shared_ptr.hpp . Compila la fuente y agrégala a tu biblioteca.
Para mantener esta cuestión de estar abierto siempre, sería muy bueno si se podría volver este post como una pregunta y luego responder por sí mismo, como lo sugiere el [FAQ] (http: // stackoverflow.com/faq#ask). – dennycrane
¡Gracias por compartir lo que has aprendido! Estoy seguro de que esto es útil para muchos. –
Dennycrane, todavía estoy experimentando con este enfoque, así que quiero dejarlo abierto un poco en caso de que haya más que agregar. Cuando obtengo una biblioteca que funciona limpiamente, informaré sobre eso y cerraré la pregunta con una respuesta. –