2013-07-18 19 views
5

ho cercato di utilizzare la seguente funzione per controllare se std :: asincrona è supportato in Android NDK con Eclipse insieme cygwin in finestre. La funzione che ho usato è il seguenteUtilizzo non valido di tipo incompleto in Android NDK utilizzando C++ 11 std :: asincrono

macchina: 64bit vincere 8 con Cygwin

Android: r8e

Eclipse: Juno 4.2.1

ADT: 22.0.1

struct Foo 
{ 
Foo() : data(0) {} 
void sum(int i) { data +=i;} 
int data; 
}; 

int main() 
{ 
    Foo foo; 

    auto f = std::async(&Foo::sum, &foo, 42); 
    f.get(); 
    std::cout << foo.data << "\n"; 
} 

ottengo il seguente errore:

Path Descrizione Resource Location T ipo uso non valido di tipo incompleto 'std :: __ async_sfinae_helper :: tipo {std :: alias struct futuro}' Sample.cpp/Cli13/jni linea 63 C/C++ Problema

Nota: Ho impostato le _GLIBCXX_HAS_GTHREADS e anche il GXX_EXPERIMENTAL_CXX0X insieme con ATOMIC_INT_LOCK_FREE ... Per impostazione predefinita il ndk utilizza 4.6 toolchain. Dovevo includere manualmente gnu-libstd ++ per 4.7 in Proprietà-> C/C++ -> Include. C'è qualche soluzione per rendere std :: async working ???

Grazie.

risposta

4

NDK Android r8e non ha il pieno sostegno libreria di runtime di C++11. Sarà necessario compilare il proprio NDK utilizzando alcuni di terze parti stdlib o attendere Google di includere il Clang 3.3 nel NDK che è C++11 funzionalità complete.

Problemi correlati