我试图在我的项目中使用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
干杯
答案 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)。