Получение ошибки: "общий ptr" в пространстве имен "std" не называет тип
Я пытаюсь скомпилировать приложение для android в Android studio (ndk r10d), которое использует некоторый код c++. Мне нужен был C++11, поэтому я добавил -std=gnu++11
(мне нужно gnu++11
вместо c++11
для расширения, которое я использую). Я использую stlport stl, из-за других библиотек, которые я использую, которые используют эту библиотеку stl.
Итак, мои параметры cFlags и stl в сборке.файл Gradle выглядит так:
stl "stlport_static"
cFlags " mylib1.a mylib2.a ... -fexceptions -frtti -std=gnu++11"
Я также включил память:#include <memory>
при попытке компиляции я получаю это ошибка:
'shared_ptr' in namespace 'std' does not name a type
до сих пор я использовал реализацию boost для интеллектуальных указателей, но с переходом на c++11 я бы предпочел использовать стандартную реализацию.
3 ответов
http://en.cppreference.com/w/cpp/memory/shared_ptr/make_shared использовать файл в ваш код.
#include <iostream>
#include <memory>
@T. C Похоже, вы были правы. Я видел ваше утверждение по другому вопросу, ища решение для моей проблемы, но поскольку библиотеки, которые я использую, компилируются с C++11 и STLport, я подумал, что это утверждение может быть неверным.
Я думаю, что библиотеки, которые я использую, не используют функции C++11, которые отсутствуют в STLport. Они используют только функции C++11, которые поддерживает компилятор gcc. Мне нужен gnuStl для поддержки функций, которыми я являюсь с помощью.
моим решением было использовать реализацию boost для интеллектуальных указателей и всех других отсутствующих функций C++11.
я получил здесь гуглить за аналогичную ошибку, но ответ не сработал:
error: ‘shared_pointer’ in namespace ‘std’ does not name a template type
В моем случае, это была опечатка:
std::shared_pointer
должно быть
std::shared_ptr