Подтвердить что ты не робот

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

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

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

Затем я создал файл Android.mk внутри sources/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);

}

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

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

РЕДАКТИРОВАТЬ: Этот вопрос содержит все, что вам нужно, чтобы включить библиотеку Boost в android. Для получения дополнительной информации обратитесь к моему ответу ниже. Надеюсь, это также сработает для вас.

Спасибо.

4b9b3361

Ответ 1

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

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

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

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

    extern C { /*cpp code*/ }

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