【问题标题】:chrono partially not supported in Android NDKAndroid NDK 部分不支持chrono
【发布时间】:2013-12-25 10:31:09
【问题描述】:

我正在尝试将 chrono 与 Android NDK 一起使用。到目前为止,我取得了一些成功,但某些功能不受支持。 我在我的 Android.mk 中添加了这一行:

LOCAL_CPPFLAGS  := -std=c++11

我的 Application.mk 文件:

APP_ABI := armeabi-v7a
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_PLATFORM := android-9

第一个问题是 stable_clock 没有定义。这一行:

std::chrono::steady_clock::time_point time = std::chrono::steady_clock::now();

产生这个编译错误:

error: 'std::chrono::steady_clock' has not been declared

我发现我可以改用 monotonic_clock 并且它可以工作,但是这种类型应该已经被 stable_clock 取代了。

第二个问题是属性 is_steady 没有为任何类型定义

LOGD("high_resolution_clock is steady: ", std::chrono::monotonic_clock::is_steady);

产生这个编译错误:

error: 'is_steady' is not a member of 'std::chrono::monotonic_clock'

有人知道 NDK 中是否完全支持 chrono 吗? 我也想知道将 c++11 与 NDK 一起使用是否是个好主意。我不确定它是稳定的还是将来可能会改变。

【问题讨论】:

    标签: android c++ c++11 android-ndk chrono


    【解决方案1】:

    好吧,我刚刚找到了解决方案。看起来你需要告诉你要使用的 gcc 版本(我猜它默认是 4.7)。我刚刚在我的 Application.mk 中添加了这一行

    NDK_TOOLCHAIN_VERSION := 4.8
    

    现在我可以使用 stable_clock 和 is_steady。

    【讨论】:

    • 仅供参考,在 C++11 标准化过程的后期,monotonic_clock 重命名为 steady_clockis_monotonic 重命名为 is_steady
    • @HowardHinnant 是的,我后来也看到了,谢谢你指出来:)
    猜你喜欢
    • 2015-05-14
    • 2013-10-19
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    相关资源
    最近更新 更多