2013-07-12 22 views
6

Ho cercato di ottenere il codice di esempio seguente che funziona per sapere se la programmazione asincrona funziona in NDK Android. Sebbene NDK abbia l'STL <future> che viene riconosciuto come intestazione, lo std::async non viene riconosciuto non viene riconosciuto. Il codice che ho cercato di utilizzare è stato il seguente:C++ 11 std :: async in Android NDK non funziona

#include <future> 
#include <iostream> 

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"; 
} 

anche tutti i percorsi di inclusione sono stati impostati nella cartella specificata in Proprietà-> Percorsi e simboli

Errors 
Description Resource Path Location Type 
invalid use of incomplete type 'std::__async_sfinae_helper<void (Foo::*)(int), void (Foo::*)(int), Foo*, int>::type {aka struct std::future<void>}' Sample.cpp /Project12/jni line 50 C/C++ Problem 

Description Resource Path Location Type 
declaration of 'std::__async_sfinae_helper<void (Foo::*)(int), void (Foo::*)(int), Foo*, int>::type {aka struct std::future<void>}' Project12  line 111, external location: D:\android-ndk-r8e-windows-x86_64\android-ndk-r8e\sources\cxx-stl\gnu-libstdc++\4.6\include\future C/C++ Problem 

risposta

9

attualmente in Android NDK non incorpora tutto delle funzionalità di C++ 11. Il compilatore Clang 3.3 da NDK r9b è completo di C++ 11, tuttavia, STL e stdlib su Android no.

Per utilizzare la serie più recente C++11 funzionalità di Android 3.3 utilizzare Clang compilatore da Android NDK r9b. Metti questa linea nel vostro file di Application.mk:

NDK_TOOLCHAIN_VERSION := clang 

Inoltre, aggiungere -std=c++11 passare alla LOCAL_CPPFLAGS variabile:

LOCAL_CPPFLAGS += -std=c++11 
+0

ancora non ricevo ... In realtà io non sono in grado di utilizzare anche il enum definito in .... È un problema con Eclipse o l'ndk o la libreria che non conosco – user2508941

+1

È il problema con l'NDK. Aspetta solo l'aggiornamento. Clang 3.3 e il nuovo stdlib saranno lì un giorno. –

+2

@ user2508941 NDK r9 è fuori, con clang 3.3. – Samveen

Problemi correlati