2011-02-03 14 views
14

Qualcuno ha effettuato il porting e utilizzato Boost su Android?Port Boost per Android

Ho trovato lo strumento che potenzia boost per Android (https://github.com/MysticTreeGames/Boost-for-Android), la compilazione ha esito positivo e ho librerie di boost statiche. ma quando sono tring di utilizzarlo in semplice applicazione Android:

#include <jni.h> 
#include "boost/thread.hpp" 

void f() 
{ 
}; 

Ho un sacco di errori di compilazione: ridefinizioni, non dichiarato ecc Sembra che riguarda NDK intestazioni std. mio Android.mk assomiglia:

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

TARGET_PLATFORM := android-8 

LOCAL_MODULE := Boost 

LOCAL_CFLAGS := -DMYSTIC -I$(LOCAL_PATH)/boost/include/ 
LOCAL_LDLIBS := -L$(LOCAL_PATH)/external/boost/lib/ 

LOCAL_CPPFLAGS := -fexceptions 
LOCAL_CPPFLAGS += -frtti 
LOCAL_CPPFLAGS += -DBOOST_THREAD_LINUX 
LOCAL_CPPFLAGS += -DBOOST_HAS_PTHREADS 
LOCAL_CPPFLAGS += -D__arm__ 
LOCAL_CPPFLAGS += -D_REENTRANT 
LOCAL_CPPFLAGS += -D_GLIBCXX__PTHREADS 
LOCAL_CPPFLAGS += -DBOOST_HAS_GETTIMEOFDAY 

LOCAL_SRC_FILES := main.cpp 

include $(BUILD_SHARED_LIBRARY) 

Inoltre ho cercato di costruire con Crystax_NDK_r4 e Android_NDK_r5b ma non ha risolto il problema.

Qualche idea?

+0

Dovresti incollare anche qui gli errori del linker. Verbatim. Pochissimi corrispondenti hanno il tempo di provare a replicare la configurazione, ma i buoni messaggi di errore aiuteranno i lettori a capire cosa sta succedendo. –

risposta

6

Ho risolto il problema. Ho specificato il percorso errato per NDK. Patch script anche CrystaX NDK. Quindi ora funziona!

1

È possibile scaricare una raccolta di script che consente di scaricare e creare alcune librerie open source c/C++ per android e ios inclusi boost in questa posizione.

https://github.com/mevansam/cmoss

4

ho appena trovato un modo semplice per costruire spinta sotto Android NDK, che non hanno bisogno di patch la spinta.

Non utilizzo Android.mk per potenziare, invece, utilizzo la toolchain standalone per creare, basta collegare la toolchain di CodeSourcery.

  1. Preparare la toolchain NDK prima:

    Installare il toolchain NDK come una toolchain standalone. Vedere $ NDK/docs/STANDALONE-TOOLCHAIN.html

    Aggiungere il percorso bin di cross-toolchain al PATH strumento boost.Build

  2. Genera, in Boost PRJ:

    ./bootstrap.sh

  3. echo "using gcc: android: arm-linux-androideabi-g ++;" > $ HOME/user-config.jam

  4. costruire esempio

    ./b2 --prefix = $ HOME/mybuild --with-thread --with-system set di strumenti = gcc-android threading = multi collegamento = installazione statica

Spero che questi possano aiutarti.