我正在尝试将 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 是否完全支持 chrono 吗? 我还想知道将 c++11 与 NDK 一起使用是否是个好主意。我不确定它是稳定的还是将来可能会发生变化。
最佳答案
好吧,我刚刚找到了解决方案。看起来您需要告诉您将要使用的 gcc 版本(我猜默认情况下是 4.7)。我刚刚在我的 Application.mk 中添加了这一行
NDK_TOOLCHAIN_VERSION := 4.8
现在我可以使用 steady_clock 和 is_steady。
关于android - Android NDK 部分不支持计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20771753/