2013-07-12 2 views
6

Я попытался получить следующий пример кода, который работает, чтобы узнать, работает ли асинхронное программирование в Android NDK. Хотя NDK имеет STL <future>, который распознается как заголовок, std::async не получает признание, не распознается. Код, который я пытался использовать было следующее:C++ 11 std :: async в Android NDK не работает

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

Кроме того, все включаемые пути были установлены в указанной папке под Properties-> Paths и Символы

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 

ответ

9

Curently Android NDK не включать все функций C++ 11. Clang 3.3 компилятор от NDK r9b является дополнением C++ 11, однако STL и stdlib на Android нет.

Чтобы использовать последний набор функций C++11 в Android, используйте компилятор Clang 3.3 от Android NDK r9b. Поместите эту строку в ваш Application.mk файл:

NDK_TOOLCHAIN_VERSION := clang 

Кроме того, добавьте -std=c++11 переключатель в LOCAL_CPPFLAGS переменной:

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

еще я не получаю это ... На самом деле я не в состоянии использовать даже перечисление, указанное в .... Это проблема с Eclipse или ndk или библиотекой, которую я не знаю – user2508941

+1

Это проблема с NDK. Дождитесь обновления. Clang 3.3 и новый stdlib будут там один день. –

+2

@ user2508941 NDK r9 отсутствует, с clang 3.3. – Samveen

Смежные вопросы