智能指针不能与Android NDK r8一起使用

Big*_*ack 13 c++ gcc smart-pointers android-ndk c++11

我无法弄清楚如何在我的Android项目中使用共享指针.我在Mac OS X上使用最新的Eclipse ADT和Android NDK r8d.

这是我的Android.mk文件中的内容:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CPPFLAGS  := -std=c++11
LOCAL_MODULE    := native
LOCAL_SRC_FILES := native.cpp
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)

这是我的Application.mk文件中的内容:

NDK_TOOLCHAIN_VERSION=4.7
APP_STL := stlport_shared
Run Code Online (Sandbox Code Playgroud)

我已经尝试了默认的GCC 4.6,实验4.7和clang3.1工具链.
我试过链接到stlport_sharedgnustl_sharedc ++运行时库.
我已经试过了FLAGS -std=c++11,-std=c++0x-std=gnu++11.

我能够使用lambdas和c ++ 11标准的auto,所以C++ 11标志似乎正在工作.但是,无论何时我尝试使用shared_ptr,weak_ptr或unique_ptr,我都会收到错误'suchandsuch_ptr' is not a member of 'std'

我有#include <memory>我的cpp文件.现在Eclipse告诉我Unresolved inclusion: <memory>,但我得到同样的东西<vector>,<string>并且那些似乎编译和工作正常.

智能指针是否未在Android NDK中包含的工具链中实现?
如果没有,为什么不呢?由于GCC和clang已经支持智能指针很长一段时间了,这意味着我要么丢失一些东西,要么Android开发者因为某些原因禁用了它们.
有线索吗?

Pot*_*ter 7

确保标准库包含路径(如/android-ndk-r8d/sources/cxx-stl/gnu-libstdc++/4.7/include)在目标设置中.

要使IDE识别GNU标准库中的C++ 11类,请将__GXX_EXPERIMENTAL_CXX0X__预定义宏添加到索引器中.(这个名称有点不合时宜,因为C++ 11已经标准化了,并且支持不再是实验性的,但这就是所谓的.)另外,请确保将索引器设置为反映正确的构建目标.