Android NDK和功能(std :: function)支持

时间:2015-11-07 15:14:06

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

我试图在我的项目中使用std :: function,已经在这里阅读过,C ++ 11得到了很好的支持。但是,简单地使用std :: function会使构建失败:

[armeabi] Compile++ thumb: MyAppNative <= MyAppNative.cpp
jni/MyAppNative.cpp: In function 'jint JNI_OnLoad(JavaVM*, void*)':
jni/MyAppNative.cpp:7:2: error: 'function' is not a member of 'std'
  std::function<void()> func;
  ^
jni/MyAppNative.cpp:7:24: error: 'func' was not declared in this scope
  std::function<void()> func;
                        ^
make: *** [obj/local/armeabi/objs/MyAppNative/MyAppNative.o] Error 1

我的问题是:是否应该支持std :: function?我已经看到它在标头中有条件地定义,具体取决于_STLP_USE_BOOST_SUPPORT。这是正常的吗?如果有人对测试感兴趣,我附上了一个示例项目。

http://www.filedropper.com/cpp11-functional-issue

干杯

2 个答案:

答案 0 :(得分:1)

好的,感谢Christian和Alex,答案确实是要更改你的Application.mk,以便引用gnustl_static。

APP_STL := gnustl_static

谢谢大家!

答案 1 :(得分:1)

您似乎正在使用的STLport从未获得过C ++ 11支持。

“如何设置运行时”中查看developer.android.com/ndk/guides/cpp-support.html并选择另一个(gnustl_static或c ++ _ static)。