错误:'to_string'不是'std'的成员

Raf*_*ñoz 7 c++ android opencv android-ndk c++11

它可能是重复的,但我尝试了我在StackOverflow上找到的所有解决方案.

我正在使用OpenCV在C++上创建一个库,并尝试为Android编译它.

我不能用,to_string(int)但我不能.我试图修改我的makefile太多次了.我的最后一个配置就是:

Android.mk

LOCAL_PATH:= $(调用my-dir)

包括$(CLEAR_VARS)

OPENCV_CAMERA_MODULES:=关闭

OPENCV_INSTALL_MODULES:=上

包括$(LOCAL_PATH)/jsoncpp/Android.mk

include /Users/rafaelruizmunoz/Desktop/AndroidDevelopment/OpenCV-2.4.9-android-sdk/sdk/ native/jni/OpenCV.mk

OPENCV_LIB_TYPE:=共享

LOCAL_C_INCLUDES + = $(LOCAL_PATH)

LOCAL_C_INCLUDES + =/Users/rafaelruizmunoz/opencvscan/OpenCVtry/

LOCAL_C_INCLUDES + =/Users/rafaelruizmunoz/Desktop/RD/OpenCVtry/Libraries/jsoncpp- master/include

LOCAL_PATH:= jni

LOCAL_ALLOW_UNDEFINED_SYMBOLS:= true

LOCAL_MODULE:= libXYZ

LOCAL_MODULE_NAME:= mylibXYZ

LOCAL_SRC_FILES:= androidClass.cpp main.cpp utils.cpp

LOCAL_LDLIBS + = -llog -ldl

LOCAL_CPPFLAGS:= - std = c ++ 11 CFLAGS = -g -Wall -Wextra -std = c ++ 11 -Wno-write-strings ../../include/boost

LOCAL_SHARED_LIBRARIES:= libJsoncpp libopencv_java

包含$(BUILD_SHARED_LIBRARY)

这是我的Application.mk

APP_STL:= gnustl_static

APP_CPPFLAGS:= -frtti -fexceptions

APP_ABI:=全部

APP_MODULES:= libXYZ libJsoncpp

APP_CPPFLAGS:= - std = gnu ++ 0x

APP_CPPFLAGS + = -frtti

APP_CPPFLAGS + = -fexceptions

APP_CPPFLAGS + = -DDEBUG

APP_CPPFLAGS + = - std = c ++ 11

NDK_TOOLCHAIN_VERSION:= 4.8

LOCAL_C_INCLUDES + = $ {ANDROID_NDK}/sources/cxx-stl/gnu-libstdc ++/4.8/include

APP_USE_CPP0X:= true

提前致谢.

thu*_*ove 6

Android NDK 9+附带llvm-libc ++,它完全支持cpp11功能.要启用它,您只需在Application.mk中修改这些:

APP_CPPFLAGS := -std=c++11
Run Code Online (Sandbox Code Playgroud)

APP_STL:=c++_static 
Run Code Online (Sandbox Code Playgroud)

要么

APP_STL:=c++_shared
Run Code Online (Sandbox Code Playgroud)


hut*_*rny 5

我也遇到了这个问题。to_string在gnu-libstdc ++中“开箱即用”不可用。我搜索了源代码,发现std :: to_string确实在lib(sources / cxx-stl / gnu-libstdc ++ / 4.9 / include / bits / basic_string.h)中,但被选择了

#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) \
     && !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF))
Run Code Online (Sandbox Code Playgroud)

在将-D_GLIBCXX_USE_C99添加到构建后,选择了std :: to_string。