Inclure Boost C++ de la bibliothèque dans android

J'ai essayé de marier Boost et android sur windows pour le long temps et essayé beaucoup d'approches, mais toujours pas de chance. Je veux faire un exemple de programme utilisant la bibliothèque Boost dans android. Je suis ce tutoriel ici.

Que ce tutoriel a suggéré, j'ai gardé mon Boost lib en * * ***(Android NDK)\sources\boost_1_44_0**** compilé avec succès.

Puis j'ai fait un Android.mk fichier à l'intérieur de sources/boost_1_44_0 et mis à l'entrée de chaque bibliothèque qui je veux utiliser. Dans ce cas, lib. fichier est libboost_date_time-gcc-mt-s-1_44.un disponible dans boost_1_44_0/android/lib/

Voici le contenu de Android.mk fichier.

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) 

Maintenant, la prochaine étape est de faire une Android.mk fichier dans mon répertoire de projet, à l'intérieur de jni dossier.(c'est de créer une bibliothèque partagée.). Voici son contenu.

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) 

Ici est l'Application.mk fichier placé sur le même emplacement, à l'intérieur de jni dossier. Contenu de la Demande.mk fichier sont les suivantes:

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

Et enfin, voici mon ndkfoo.cpp fichier

#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);

}

ce programme peut être incorrecte, mais le problème est qu'il ne reconnaît pas tout stimuler les en-têtes ou de la fonction. et j'ai toujours erreur de compilation.

Est-il quelque chose que je suis absent ou de faire mal? Toute aide serait vraiment appréciée.

EDIT: Cette question contient tout ce que vous devez inclure la bibliothèque Boost dans android. Pour plus de conseils, regarde ma réponse ci-dessous. J'espère que cela serait aussi le travail pour vous.

Grâce.

  • Pour une chose: votre chemin est légèrement différent: dans le tutoriel, l'auteur a extrait de $ANDROID_NDK/sources/boost. Vous ne savez pas si cela fait une différence. L'auteur du chemin de la lib commence avec android/.., la vôtre avec boost_1_44_0/android/... j'essaie tout d'abord de suivre le tutoriel exactement et voir si cela résout votre problème.
  • ya vrai, mais je pense qu'il ne pourrait pas faire de différence.
  • knock knock quelqu'un est là? s'il vous plaît aider moi......
  • Avez-vous essayé d'utiliser "ndk-build V=1" pour voir si les inclusions sont de droite? Ce journal pourrait nous donne plus d'indices.
  • salut! @paul, avez-vous essayez d'exécuter bjam ou b2. c'est un outil pour compiler boost. regardez ce lien. codexperiments.com/android/2011/05/... je l'ai déjà mentionné ce lien dans mon post.
  • Ouais, j'ai réussi à compiler bjam premier. Mais quand j'ai essayé de compiler bibliothèque boost. c'est de me donner un inconnu dans le chemin d'accès du module.
  • avez-vous mis le NDK chemin dans user_config.de la confiture
  • Oui, j'ai suivi les instructions de l'article.
  • okk puis essayez d'installer compilateur mingW gcc(compilateur), puis définissez le chemin d'accès dans le respect de variables ou de copie gcc.exe pour cygwin bin du dossier.
  • laissez-nous continuer cette discussion dans le chat
  • Merci pour votre aide sur mon problème et apprécions également votre description du problème avec le fichier include. Maintenant, je peux utiliser boost dans mon application.
  • bienvenue et N_JOY coup de pouce.
  • Je suis en train d'essayer de résoudre les mêmes problèmes que la question. Il semble que la façon dont ils se sont résolus, il était perdu dans la "continuer cette discussion dans le chat" lien. Peut quelqu'un jeter une certaine lumière sur la façon dont je pourrais utiliser boost avec Android s'il vous plaît. Je vais avoir un problème avec include<boost/*.h>. S'il vous plaît aider
  • Aussi essayer et de regarder les suggestions mentionnées dans la réponse
  • J'obtiens une erreur au moment de la compilation lorsque je inclure boost-tête: 'struct in6_addr' a aucun membre nommé 's6_addr' . S'il vous plaît aider

InformationsquelleAutor N-JOY | 2011-10-25