2011-02-03 2 views
14

Кто-нибудь портировал и использовал Boost на Android?Port Boost для Android

Я нашел инструмент, который наращивает поддержку для Android (https://github.com/MysticTreeGames/Boost-for-Android), сборка выполнена успешно, и у меня есть статические boost libs. Но когда я Тринг, чтобы использовать его в простом приложении для Android:

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

void f() 
{ 
}; 

у меня есть много ошибок компиляции: переопределениях, необъявленные и т.д. Кажется, это касается заголовков StD НКА. Мои Android.mk выглядит следующим образом:

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) 

Также я пытался построить с Crystax_NDK_r4 и Android_NDK_r5b, но это не решило проблему.

Любые идеи?

+0

Здесь также следует вставлять ошибки компоновщика. Verbatim. У очень немногих корреспондентов есть время, чтобы попытаться воспроизвести вашу настройку, но хорошие сообщения об ошибках помогут найти читателей в том, что происходит. –

ответ

6

Я решил проблему. Я указал неверный путь к NDK. Скриптовые патчи CrystaX NDK тоже. Так что теперь это работает!

1

Вы можете скачать коллекцию скриптов, которые будут загружать и создавать некоторые популярные библиотеки с открытым исходным кодом c/C++ для Android и ios, включая boost в этом месте.

https://github.com/mevansam/cmoss

4

Я только что нашел простой способ создания подталкивания под андроид НКА, которые не нужно латать импульс.

Я не использую Android.mk для создания boost, вместо этого я использую автономную инструментальную цепочку для сборки, просто свяжите инструментальную цепочку CodeSourcery.

  1. Подготовьте набор инструментов NDK первый:

    Установите набор инструментов NDK в качестве автономного набора инструментов. См $ NDK/Docs/STANDALONE-TOOLCHAIN.html

    Добавьте бен путь перекрестного набора инструментов для вашего PATH

  2. Построить boost.Build инструмент, в Boost, Prj:

    ./bootstrap.sh

  3. echo "Использование gcc: android: arm-linux-androideabi-g ++;" > $ HOME/пользователь config.jam

  4. Построить пример

    ./b2 prefix = $ HOME/mybuild --with-нить --with-системы Toolset = НКА-андроида потоковой = мульти связи = статическая установка

Надеюсь, они могут вам помочь.