Я не могу понять, как использовать общие указатели в моем проекте 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 по какой-то причине отключили их.
Любые подсказки?