在安卓 NDK 中部分不支持

chrono partially not supported in Android NDK

本文关键字:不支持 中部 NDK      更新时间:2023-10-16

我正在尝试将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

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

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

生成此编译错误:

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

我发现我可以改用monotonic_clock并且它可以工作,但这种类型应该已被steady_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 中是否完全支持计时吗?我还想知道在 NDK 中使用 c++11 是否是个好主意。我不确定它是否稳定或将来可能会发生变化。

好吧,

我刚刚找到了一个解决方案。看起来你需要告诉你将要使用的gcc版本(我想默认情况下是4.7)。我只是在我的 Application.mk 中添加了这一行

NDK_TOOLCHAIN_VERSION := 4.8

现在我可以使用steady_clock和is_steady。