Android ndk std:: to_string सपोर्ट




c++ android-ndk (4)

मैं एंड्रॉइड NDK r9d और टूलचिन 4.8 का उपयोग कर रहा हूं लेकिन मैं std :: to_string फ़ंक्शन का उपयोग करने में सक्षम नहीं हूं, कंपाइलर इस त्रुटि को फेंकता है:

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

क्या यह फ़ंक्शन android ndk पर समर्थित नहीं है? मैं APP_CPPFLAGS := -std=c++11 को बिना किसी भाग्य के APP_CPPFLAGS := -std=c++11


Gradle

यदि आप ग्रैड बिल्ड सिस्टम के लिए समाधान की तलाश कर रहे हैं। इस उत्तर को देखो।

संक्षिप्त जवाब।

स्ट्रिंग जोड़ें

arguments "-DANDROID_STL=c++_shared"

अपने build.gradle । पसंद

android {
  ...
  defaultConfig {
    ...
    externalNativeBuild {
      cmake {
        ...
        arguments "-DANDROID_STL=c++_shared"
      }
    }
  }
  ...
}

प्रायोगिक ग्रेडल प्लगिन

यदि आप प्रायोगिक ग्रेड प्लगइन के लिए एक समाधान की तलाश कर रहे हैं, तो यह मेरे लिए काम करता है ...

Com.android.tools.build:gradle-experimental if.9.1 के साथ परीक्षण किया गया

model {
  ...
  android {
    ...
    ndk {
      ...
      stl = "c++_shared"
    }
  }
}

NDK r9 + के साथ आप llvm-libc++ उपयोग कर सकते हैं जो cpp11 के लिए पूर्ण समर्थन प्रदान करता है।

अपने Application.mk आपको जोड़ना होगा:

APP_STL:=c++_static 

या

APP_STL:=c++_shared

आप LOCAL_CFLAGS := -std=c++11 आज़मा सकते हैं, लेकिन ध्यान दें कि सभी C ++ 11 API NDK के gnustl के साथ उपलब्ध नहीं हैं । Full C ++ 14 समर्थन libc ++ ( APP_STL := c++_shared ) के साथ उपलब्ध है।

इसका विकल्प खुद इसे लागू करना है।

#include <string>
#include <sstream>

template <typename T>
std::string to_string(T value)
{
    std::ostringstream os ;
    os << value ;
    return os.str() ;
}

int main()
{
    std::string perfect = to_string(5) ;
}




c++-standard-library