2015-03-07 22 views
10

Sto provando a compilare un'applicazione Android in Android Studio (ndk r10d) che utilizza un codice C++. Avevo bisogno del C++ 11, quindi ho aggiunto -std=gnu++11 (ho bisogno di gnu++11 invece di c++11 per un'estensione che sto usando). Sto usando lo stlport stl, a causa di altre librerie che sto usando che usano questa libreria stl. Così i miei CFLAGS e parametri STL nel file build.gradle assomiglia a questo:Errore di ricezione: 'shared_ptr' nello spazio dei nomi 'std' non nomina un tipo

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

ho memoria anche hanno incluso: #include <memory>

Quando si cerca di compilare ricevo questo errore:

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

Fino ad ora ho utilizzato l'implementazione boost per i puntatori intelligenti ma con il passaggio a C++ 11 preferisco utilizzare l'implementazione standard.

+0

Qual è il codice effettivo che causa l'errore? –

+0

L'errore originale è su questa definizione che ho aggiunto per rendere il codice più breve ma gli errori sono visti in tutti i file ovunque io tenti di usare questa macro: #define myapp_shared_ptr std :: shared_ptr – royeet

+0

shared_ptr non nomina un tipo. Denomina un modello di tipo. Sei sicuro di fare shared_ptr quando lo usi? L'errore che ottengo quando esco è "l'uso del modello di classe richiede argomenti del modello" – Charlie

risposta

1

@ T.C Sembra che tu abbia ragione. Ho visto il tuo reclamo su una domanda diversa mentre cercavo una soluzione per il mio problema, ma siccome le librerie che sto usando si stanno compilando con C++ 11 e STLport ho pensato che questa affermazione potrebbe non essere vera.

Quello che penso sia accaduto è che le librerie che sto usando non stanno usando nessuna caratteristica di C++ 11 che manchi STLport. Stanno usando solo le caratteristiche di C++ 11 che il compilatore gcc supporta. Ho bisogno di gnuStl per supportare le funzionalità che sto usando.

La mia soluzione era utilizzare l'implementazione boost per i puntatori intelligenti e tutte le altre funzionalità C++ 11 mancanti.

+0

Sì, GNU STL supporta tutte le funzionalità di C++ 11. – juzzlin

Problemi correlati