Il pourrait être double, mais j'essayé toutes les solutions que j'ai trouvé sur et hors StackOverflow. P>
Je fais une bibliothèque C ++ avec OpenCV et essayer de le compiler pour Android. P>
Je ne peux pas utiliser Android.mk strong> p>
local_path: = $ (appeler mon-dir) p>
include $ (CLEAR_VARS) p>
OPENCV_CAMERA_MODULES: = off p>
OPENCV_INSTALL_MODULES: = sur p>
include $ (local_path) /jsoncpp/Android.mk p>
inclure /Users/rafaelruizmunoz/Desktop/AndroidDevelopment/OpenCV-2.4.9-android-
sdk / sdk / native / JNI / OpenCV.mk p>
OPENCV_LIB_TYPE: = shared p>
LOCAL_C_INCLUDES + = $ (local_path) p>
LOCAL_C_INCLUDES + = / Users / rafaelruizmunoz / opencvscan / OpenCVtry / p>
LOCAL_C_INCLUDES + = / Users / rafaelruizmunoz / Desktop / RD / OpenCVtry / Bibliothèques / jsoncpp-
maître / include p>
local_path: = JNI p>
LOCAL_ALLOW_UNDEFINED_SYMBOLS: = true p>
LOCAL_MODULE: = libXYZ p>
LOCAL_MODULE_NAME: = mylibXYZ p>
LOCAL_SRC_FILES: = androidClass.cpp main.cpp utils.cpp p>
LOCAL_LDLIBS + = -llog -ldl p>
LOCAL_CPPFLAGS: = -std = c ++ 11 CFLAGS = -g -Wall -Wextra -std = c ++ 11 -Wno-écriture cordes
../../ include / boost p>
LOCAL_SHARED_LIBRARIES: = libJsoncpp libopencv_java p>
include $ (BUILD_SHARED_LIBRARY) p>
blockQuote>
et ceci est mon Application.mk strong> p>
APP_STL: = gnustl_static p>
APP_CPPFLAGS: = -frtti -fexceptions p>
APP_ABI: = all p>
APP_MODULES: = libXYZ libJsoncpp p>
APP_CPPFLAGS: = std = gnu ++ 0x p>
APP_CPPFLAGS + = -frtti p>
APP_CPPFLAGS + = -fexceptions p>
APP_CPPFLAGS + = -DDEBUG p>
APP_CPPFLAGS + = std = c ++ 11 p>
NDK_TOOLCHAIN_VERSION: = 4,8 p>
LOCAL_C_INCLUDES + = $ {} ANDROID_NDK / sources / cxx-stl / gnu-libstdc ++ / 4.8 / include p>
APP_USE_CPP0X: = true p>
blockQuote>
Merci à l'avance. P> to_string (int) code> mais je ne suis pas en mesure. J'ai essayé de modifier mon makefile trop de fois. Ma dernière configuration est la suivante sur: p>
3 Réponses :
Android NDK 9+ est livré avec LLVM-LIBC ++ qui dispose d'une prise en charge complète des fonctionnalités CPP11. Pour l'activer, tout ce que vous avez à faire est de les modifier dans application.mk: et p> ou p> < Pré> xxx pré> p>
Ce stdlib est compatible avec GCC, non seulement avec Clang, n'est-ce pas?
Vous pouvez essayer ceci:
#include <string> #include <sstream> #if defined(__ANDROID__) #define TO_STRING to_stringAndroid template <typename T> inline std::string to_stringAndroid(const T& value) { std::ostringstream os ; os << value ; return os.str() ; } #else #define TO_STRING std::to_string #endif
Mieux vaut passer des paramètres comme référence: inline std :: string to_stringandroid (const t & valeur) code>
J'ai également couru dans cette question. to_string n'est pas disponible dans gnu-libstdc ++ "hors de la boîte". J'ai cherché les sources et j'ai constaté que STD :: to_string est en effet dans la libère (Sources / CXX-STL / GNU-LIBSTDC ++ / 4.9 / Inclure / BITS / BASIC_STRING.H) mais a choisi de choisir par
#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) \ && !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF))
Votre fichier source comprend-il code> avant d'utiliser
std :: to_string code> ...? Si tel est le cas, vous pouvez utiliser
g ++ -e ... code> pour voir la sortie de pré-dépresseur et vérifier
to_string code> est là ... Si vous ne vérifiez pas le conditionnel
#Ifdef < / Code> Dans l'en-tête et Google, tout ce qui définit vous manquez. Xcode pourrait définir les symboles de préprocesseur supplémentaires dont vous avez besoin ...
Oui, ça marche vraiment bien sur Xcode. La bibliothèque fonctionne parfaitement lorsque je le compile.
Ok, je vais le faire