2013-07-18 13 views
5

Próbowałem użyć poniższej funkcji, aby sprawdzić, czy std :: async jest obsługiwany w Android ndk z Eclipse wraz z cygwin w oknach. Funkcja użyłem jest następującyNieprawidłowe użycie niekompletnego typu w Android ndk przy użyciu C++ 11 std :: async

Maszyna: 64bit wygrać 8 z Cygwin

Android: R 8e

Juno Eclipse: 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"; 
} 

Pojawia się następujący błąd:

Opis Ścieżka do zasobu Położenie T Ype Nieprawidłowe użycie niekompletnej typu 'std :: __ async_sfinae_helper :: typu struct {std :: aka przyszłość}' Sample.cpp/Cli13/JNI linia 63 C/C++ Problem

Uwaga: Mam ustawić _GLIBCXX_HAS_GTHREADS a także the GXX_EXPERIMENTAL_CXX0X razem z ATOMIC_INT_LOCK_FREE ... Domyślnie ndk używa 4.6 toolchain. Musiałem włączyć gnu-libstd ++ do 4.7 ręcznie w Properties-> C/C++ -> Includes. Czy są jakieś prace, aby std :: async działał ???

Dziękuję.

Odpowiedz

4

Android NDK r8e nie ma pełnej obsługi biblioteki uruchomieniowej C++11. Będziesz musiał skompilować własne NDK za pomocą jakiegoś zewnętrznego dostawcy usług stdlib lub poczekać, aż Google doda numer Clang 3.3 do NDK, który jest kompletny pod numerem C++11.

Powiązane problemy