Я не могу понять, как использовать общие указатели в моем проекте Android. Я использую последний Eclipse ADT в Mac OS X с 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)
Вот что находится в моем файле Application.mk:
NDK_TOOLCHAIN_VERSION=4.7
APP_STL := stlport_shared
Я попробовал GCC 4.6 по умолчанию, экспериментальные 4.7 и инструментальные цепочки clang3.1.
Я попытался подключиться к библиотекам времени выполнения stlport_shared и gnustl_shared С++.
Я пробовал FLAGS -std=c++11, -std=c++0x и -std=gnu++11.
Я могу использовать lambdas и auto стандарта С++ 11, поэтому флаг С++ 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 по какой-то причине отключили их.
Любые подсказки?