2013-07-12 11 views
6

Ich habe versucht, folgenden Beispielcode zu erhalten, um zu wissen, ob die asynchrone Programmierung in Android NDK funktioniert. Obwohl NDK die STL <future> hat, die als Header erkannt wird, wird die std::async nicht erkannt werden nicht erkannt. Der Code, den ich zu verwenden versucht, war folgendes:C++ 11 Std :: Async in Android NDK funktioniert nicht

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

auch alle Pfade enthalten sind in den angegebenen Ordner unter Einstellungen-> Pfade und 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 

Antwort

9

Curently Android NDK nehmen nicht alle gesetzt worden ist der C++ 11 Funktionen. Clang 3.3 Compiler von NDK r9b ist C++ 11-Feature komplett, jedoch STL und stdlib auf Android sind nicht.

Um das neueste C++11 Feature-Set in Android verwendet Clang 3.3 Compiler von Android NDK r9b zu verwenden. Setzen Sie diese Zeile in Ihre Application.mk Datei:

NDK_TOOLCHAIN_VERSION := clang 

Fügen Sie außerdem -std=c++11 Schalter auf die LOCAL_CPPFLAGS Variable:

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

noch ich es nicht bin immer ... In der Tat bin ich nicht in der Lage zu nutzen, auch die Enum definiert in .... Ist es ein Problem mit Eclipse oder der ndk oder die Bibliothek, die ich nicht kenne – user2508941

+1

Es ist das Problem mit dem NDK. Warte einfach auf das Update. Clang 3.3 und die neue stdlib werden eines Tages dort sein. –

+2

@ user2508941 NDK r9 ist out, mit clang 3.3. – Samveen

Verwandte Themen