我不知道如何在我的 Android 项目中使用共享指针。我在带有 Android NDK r8d 的 Mac OS X 上使用最新的 Eclipse ADT。
这是我的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)
这是我的Application.mk
文件中的内容:
NDK_TOOLCHAIN_VERSION=4.7
APP_STL := stlport_shared
我已经尝试过默认的 GCC 4.6、实验性 4.7 和 clang3.1 工具链。
我已经尝试链接到stlport_shared
C gnustl_shared
++ 运行时库。
我试过FLAGS
-std=c++11
,-std=c++0x
和-std=gnu++11
.
我能够使用 c++11 标准的 lambdas 和 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 开发人员出于某种原因禁用了它们。
有什么线索吗?