Intereting Posts
Могу ли я отключить проверку орфографии на определенных диапазонах в EditText Раздувание RecyclerView в DialogFragment IllegalStateException Android: android.view.InflateException: двоичная строка XML-файла # 13: ошибка раздувания класса <unknown> в SAMSUNG Galaxy S Запись с помощью AudioRecord на Android ускоряет аудио? Ясность видео с моим кодом немного ниже по сравнению с записью с камерой Android Контекст приложения SharedPreferences и контекст активности В Android, как добиться эффекта привязки к списку при соблюдении ускорения, вызванного сбросом? Получить ресурс от Uri Android – Ошибка в памяти. Когда он работает на реальном устройстве Google Analytics V4 с устройствами Amazon Диспетчер виртуальных устройств Android падает с «двойным свободным или повреждением» Увеличение среднего элемента в списке – андроид? Декодирование видеопотока на Android от DJI drone Android – подключение Https к .NET WCF-сервису дает SSLException: «No peer certificate» Как узнать, где на SD-карте хранятся изображения, DCIM / Camera, DCIM / 100MEDIA?

Включить библиотеку 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*/ }

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