3

我正在尝试将 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 一起使用是否是个好主意。我不确定它是否稳定或将来可能会改变。

4

1 回答 1

3

Well I just found a solution. Looks like you need to tell the gcc version you are going to use (I guess it's the 4.7 by default). I just added this line in my Application.mk

NDK_TOOLCHAIN_VERSION := 4.8

Now I can use steady_clock and is_steady.

于 2013-12-25T10:36:30.587 回答