错误:没有名为' to_string'在命名空间' std';你的意思是' toString'?摇篮+ cmake的

时间:2017-01-12 00:11:11

标签: gradle android-ndk android-gradle clang android-sdk-2.3

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

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

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

  1. 写自己的std :: to_string()是个坏主意。标准是标准的。如果我写自己的实现。我需要用定义来包装它,以防止来自其他编译器/工具链的错误,这些错误不会泄漏标准功能。这个impl仍然泄漏全功能STD。
  2. Application.mk - 因为最新的工作室提供Gradle + CMake,所以也是个坏主意。 Makefile太难看了,难以手动使用。
  3. 我的solution更好。

1 个答案:

答案 0 :(得分:2)

  

这是否意味着CLang不符合STandarD?

不,这是因为默认情况下在Android NDK中设置了最小的std库。

我使用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