Fehler werden: 'shared_ptr' im Namespace 'std' nennt keinen Typ

Ich versuche, eine Android-Anwendung im Android-Studio (ndk r10d) zu kompilieren, die einen C ++ – Code verwendet. Ich brauchte C ++ 11 also habe ich hinzugefügt -std=gnu++11 (ich brauche gnu++11 anstelle von c++11 für eine verlängerung, die ich verwende). Ich benutze den stlport stl, wegen anderer bibliotheken, die ich benutze, die diese stl bibliothek benutzt. Also meine cFlags und stl Parameter in der build.gradle Datei sieht so aus:

 stl "stlport_static" cFlags " mylib1.a mylib2.a ... -fexceptions -frtti -std=gnu++11" 

Ich habe auch Speicher enthalten: #include <memory>

Wenn ich versuche zu kompilieren, erhalte ich diesen Fehler:

 'shared_ptr' in namespace 'std' does not name a type 

Ich habe die Boost-Implementierung für die smart pointers bis jetzt aber mit dem Umzug auf c ++ 11 verwendet. Ich würde lieber die Standardimplementierung verwenden.

2 Solutions collect form web for “Fehler werden: 'shared_ptr' im Namespace 'std' nennt keinen Typ”

http://de.cppreference.com/w/cpp/memory/shared_ptr/make_shared verwenden Kopfdatei in Ihrem Code.

 #include <iostream> #include <memory> 

@TC Sieht aus, als hättest du recht. Ich habe Ihre Behauptung auf eine andere Frage gesehen, während ich nach einer Lösung für mein Problem suche, aber als Bibliotheken, die ich verwende, kompilieren mit C ++ 11 und STLport Ich dachte, dass diese Behauptung vielleicht nicht wahr ist.

Was ich denke, ist, dass die Bibliotheken, die ich verwende, keine C ++ 11-Funktionen verwenden, die der STLport fehlt. Sie verwenden nur C ++ 11-Funktionen, die der gcc-Compiler unterstützt. Ich brauche die gnuStl, um die Features zu unterstützen, die ich verwende.

Meine Lösung war, die Boost-Implementierung für die intelligenten Zeiger und alle anderen fehlenden C ++ 11 Features zu verwenden.

Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.