Error: no member named 'to_string' in namespace 'std'; did you mean 'toString'? Gradle+Cmake

Error: no member named 'to_string' in namespace 'std'; did you mean 'toString'? Gradle+Cmake

<string> 已包括在内。 std::to_sting(intVar) 有什么问题?

cppreference。这是否意味着 CLang 不符合标准?

Another question 有帮助,但答案并不好 (对我来说) 因为:

  1. 写自己的 std::to_string() 是个坏主意。标准就是标准。如果我编写自己的实现。我需要用定义来包装它,以防止另一个 compilers/toolchains 不泄漏标准功能的错误。而且这个 impl 仍然会泄漏全功能的 STD。
  2. Application.mk - 这也是个坏主意,因为最新的工作室提供 Gradle+CMake。 Makefile 太丑陋,难以手动使用。
  3. 我的比较好。

Does it mean CLang does not meet STandarD?

不是,这是因为 Android NDK 默认设置了最小标准库。

我使用gradle构建系统:

android {
  ...
  defaultConfig {
    ...
    // This block is different from the one you use to link Gradle
    // to your CMake build script.
    externalNativeBuild {
      cmake {
        ...
        // Use the following syntax when passing arguments to variables:
        // arguments "-DVAR_NAME=VALUE"
        // ------------------- ANSWER -------------------
        arguments "-DANDROID_STL=c++_shared"
      }
    }
  }
  buildTypes {...}

  // Use this block to link Gradle to your CMake build script.
  externalNativeBuild {
    cmake {...}
  }
}

阅读这些:
https://developer.android.com/ndk/guides/cmake.html#variables
https://developer.android.com/ndk/guides/cpp-support.htm