错误:名称空间'std'中没有名为'to_string'的成员;你的意思是'toString'?摇篮+ cmake的 [英] Error: no member named 'to_string' in namespace 'std'; did you mean 'toString'? Gradle+Cmake

查看:2564
本文介绍了错误:名称空间'std'中没有名为'to_string'的成员;你的意思是'toString'?摇篮+ cmake的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

包含

< string> std :: to_sting(intVar)中有什么错误?



cppreference

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



另一个问题帮助,但答案不是很好(对我来说),因为:


  1. 写入自己的std :: to_string()是个坏主意。标准是标准的。如果我写自己的实现。我需要用定义来包装它,以防止来自其他编译器/工具链的不会泄漏std特性的错误。而这个impl仍然会泄露功能全面的STD。

  2. Application.mk - 由于最新的Studio提供了Gradle + CMake, Makefile太难以用于手动使用。

  3. 我的解决方案更好。

  4. ol>

    解决方案


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


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



    我使用gradle构建系统:

      android {
    ...
    defaultConfig {
    ...
    //此块与您用来将Gradle
    //链接到您的CMake构建脚本的块不同。
    externalNativeBuild {
    cmake {
    ...
    //将参数传递给变量时使用以下语法:
    //参数-DVAR_NAME = VALUE
    // ------------------- ANSWER -------------------
    arguments - DANDROID_STL = c ++ _ shared

    }
    }
    buildTypes {...}

    //使用此块将Gradle链接到您的CMake构建脚本。
    externalNativeBuild {
    cmake {...}
    }
    }

    阅读以下内容:

    https:/ /developer.android.com/ndk/guides/cmake.html#variables

    https://developer.android.com/ndk/guides/cpp-support.htm


    <string> is included. What is wrong in std::to_sting(intVar)?

    cppreference. Does it mean CLang does not meet STandarD?

    Another question helped, but the answers are not good (for me) because:

    1. write own std::to_string() is bad idea. Standard is standard. If i write own implementation. I need to wrap it with defines to prevent errors from another compilers/toolchains which does not leak std features. And this impl still leaks full-featured STD.
    2. Application.mk - is bad idea too since lastest studio offers Gradle+CMake. Makefile is too ugly and hard for manual using.
    3. My solution is better.

    解决方案

    Does it mean CLang does not meet STandarD?

    No, it is because minimal std library set in Android NDK by default.

    I use gradle build system:

    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 {...}
      }
    }
    

    Read these:
    https://developer.android.com/ndk/guides/cmake.html#variables
    https://developer.android.com/ndk/guides/cpp-support.htm

    这篇关于错误:名称空间'std'中没有名为'to_string'的成员;你的意思是'toString'?摇篮+ cmake的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆