【问题标题】:Error: no member named 'to_string' in namespace 'std'; did you mean 'toString'? Gradle+Cmake错误:命名空间“std”中没有名为“to_string”的成员;你是说'toString'吗? Gradle+Cmake
【发布时间】:2017-01-12 00:11:10
【问题描述】:

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

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

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

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

【问题讨论】:

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


【解决方案1】:

这是否意味着 CLang 不符合 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

【讨论】:

    猜你喜欢
    • 2014-09-26
    • 2021-01-24
    • 2021-07-18
    • 2021-01-24
    • 2012-09-29
    • 2021-03-04
    • 1970-01-01
    • 2013-06-09
    • 2017-02-13
    相关资源
    最近更新 更多