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

error: 'to_string' is not a member of 'std'

本文关键字:std 不是 成员 to 错误 string      更新时间:2023-10-16

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

我正在用OpenCV在C++上制作一个库,并试图为Android编译它。

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

Android.mk

LOCAL_PATH:=$(调用我的目录)

包括$(CLEAR_VARS)

OPENCV_CAMERA_MODULES:=关闭

OPENCV_INSTALL_MODULES:=在上

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

包括/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-主/包含

LOCAL_PATH:=jni

LOCAL_ALLOW_UNDEFINED_SYMBOLS:=真

LOCAL_MODULE:=libXYZ

LOCAL_MODULE_NAME:=mylibXYZ

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

LOCAL_LDLBS+=-log-ldl

LOCAL_CAPFLAGS:=-std=c++11 CFLAGS=-g-Wall-Wextra-std=c++11-Wno写字符串../../include/boost

LOCAL_ARED_LIBRARIES:=libJsoncpp libopencv_java

包括$(BUILD_ARED_LIBRARY)

这是我的应用程序.mk

APP_STL:=gnustl_static

APP_CPPFLAGS:=-frti-异常

APP_ABI:=所有

APP_MODULES:=libXYZ libJsoncpp

APP_CPPFLAGS:=-std=gnu++0x

APP_CPPFLAGS+=-frtti

APP_CPPFLAGS+=-异常

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:=真

提前谢谢。

我也遇到了这个问题。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))

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

Android NDK 9+附带llvm libc++,它完全支持cpp11功能。要启用它,你所要做的就是在Application.mk:中修改这些

APP_CPPFLAGS := -std=c++11

APP_STL:=c++_static 

APP_STL:=c++_shared

你可以试试这个:

#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