Я давно пытаюсь жениться на Boost и Android на Windows и перепробовал множество подходов, но все же не повезло.Я хочу сделать пример программы с использованием библиотеки 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.Для большего количества подсказок посмотрите на мой ответ ниже.Надеюсь, это будет работать для вас.
Спасибо.