Intereting Posts
Как установитьTheme для активности во время выполнения? Он не работает с вызовом setTheme перед onCreate и setContentView Разница между представлением и виджетами Ограничение области, в которую пользователь может перейти на Mapview Android Lubuntu – ошибка libGL: не удалось загрузить драйвер: i965 Ошибка lib / gdbserver: разрешение отклонено Android – Получить время виджета хронометра SwipeRefreshLayout запускается программно AndroidManifest.xml – указанный для свойства 'manifest' не существует Android не может получить доступ к localhost? Firebase – Как написать / прочитать данные для каждого пользователя после аутентификации Как создать выпадающий список в навигационном ящике (в Android)? Gridview – Нажмите на изображение, чтобы посмотреть картинку в Viewpager Установка модуля Genymotion Eclipse Как загрузить несколько андроидных архивов (по одному на каждый вкус) Java.lang.ClassNotFoundException после изменения ничего в проекте, но обновление eclipse android sdk

Включить библиотеку Boost C ++ в android

Я долго пытался жениться на Boost and android на окнах и пытался много подходов, но до сих пор не повезло. Я хочу создать образец программы, используя библиотеку Boost в android. Я следую этому руководству здесь.

Поскольку этот учебник предположил, что я сохранил свою Boost lib в **** (Android NDK) \ sources \ boost_1_44_0 ****, скомпилировал ее успешно.

Затем я сделал файл Android.mk внутри источников / boost_1_44_0 и сделал запись каждой библиотеки, которую я хочу использовать. В этом случае lib. Файл – libboost_date_time-gcc-mt-s-1_44.a, доступный в boost_1_44_0 / android / lib /
Вот содержание файла Android.mk .

LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE:= boost_date LOCAL_SRC_FILES:= boost_1_44_0/android/lib/libboost_date_time-gcc-mt-s-1_44.a LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) include $(PREBUILT_STATIC_LIBRARY) 

Теперь следующий шаг – сделать файл Android.mk в моем каталоге проектов, внутри jni папки (это создать общую библиотеку). Вот его содержание.

 LOCAL_PATH := $(call my-dir) include $(call all-subdir-makefiles) include $(CLEAR_VARS) # Here we give our module name and source file(s) LOCAL_LDLIBS := -llog -ldl LOCAL_MODULE := ndkfoo LOCAL_SRC_FILES := ndkfoo.cpp LOCAL_STATIC_LIBRARIES := boost_date include $(BUILD_SHARED_LIBRARY) $(call import-module,boost_1_44_0) 

Вот файл Application.mk, размещенный в том же месте, внутри jni- папки. Содержимое файла Application.mk выглядит следующим образом:

 APP_STL = gnustl_static #(or APP_STL = stlport_static as required) APP_CPPFLAGS = -fexceptions 

И, наконец, вот мой файл ndkfoo.cpp

 #include <string.h> #include <jni.h> #include <stdio.h> #include <boost/date_time.hpp> using namespace boost::gregorian; void Java_com_ndkfoo_NdkfooActivity_invokeNativeFunction(JNIEnv* env, jobject javaThis) { date weekstart(2002,Feb,1); } 

Эта программа может быть неправильной, но проблема в том, что она не распознает заголовки или функции повышения. И я всегда получаю ошибку компиляции.

Есть что-то, чего я не вижу или делаю неправильно? Любая помощь могла бы быть полезна.

EDIT: этот вопрос содержит все, что вам нужно, чтобы включить Boost library в android. Для получения дополнительной информации см. Мой ответ ниже. Надеюсь, это тоже сработает для вас.

Благодарю.

Мой вопрос содержит почти полные шаги для включения библиотеки BOOST в android. Но все же есть некоторые важные моменты, которые вы должны помнить при работе с этим.

  • Удалить автоматически сгенерированную папку obj и lib s Каждый раз, прежде чем вы скомпилируете свой собственный код.

  • Если вы собираетесь писать свой собственный код на C ++, добавьте LOCAL_CPP_EXTENSION := .cpp в свой файл Android.mk ( jni/Android.mk ).

  • Если вы собираетесь писать код на C ++, поместите весь код cpp внутри extern "C" {} .

    extern C { /*cpp code*/ }

  • Не сдавайся, будьте терпеливы и продолжайте пытаться;).