2013-07-12 39 views
6

Próbowałem wykonać następujący przykładowy kod, aby dowiedzieć się, czy programowanie asynchroniczne działa w systemie Android NDK. Choć NDK ma STL <future>, który zostanie rozpoznany jako nagłówek, to nie zostanie rozpoznany, ale nie zostanie rozpoznany. Kod Próbowałem użytku był następujący:C++ 11 std :: async w systemie Android NDK nie działa

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

obejmują także wszystkie ścieżki zostały ustawione w określonym folderze pod Ustawienia-> Ścieżki i symbole

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 

Odpowiedz

9

curently Android NDK nie uwzględnienie wszystkich funkcji C++ 11. Kompilator Clang 3.3 z NDK r9b jest kompletny w wersji C++ 11, jednak w systemach Android nie ma wersji STL i stdlib.

Aby użyć najnowszego zestawu funkcji C++11 w systemie Android, użyj kompilatora Clang 3.3 z wersji Android NDK r9b. Umieścić tę linię do pliku Application.mk:

NDK_TOOLCHAIN_VERSION := clang 

Trzeba również dodać -std=c++11 przełącznik w LOCAL_CPPFLAGS zmiennej:

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

nadal nie jestem coraz to ... W rzeczywistości nie jestem w stanie wykorzystać nawet enum zdefiniowane w .... Czy jest to problem z Eclipse lub ndk lub biblioteką Nie wiem – user2508941

+1

To jest problem z NDK. Po prostu poczekaj na aktualizację. Clang 3.3 i nowy stdlib będzie tam jeden dzień. –

+2

@ user2508941 NDK r9 wyszedł, z klang 3.3. – Samveen

Powiązane problemy