Я попытался использовать следующую функцию, чтобы проверить, поддерживается ли std :: async в android ndk с Eclipse вместе с cygwin в окнах. Функция, которую я использовал, следующая
Машина: 64-битный выигрыш 8 с cygwin
Android: r8e
Eclipse: Juno 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"; }
Я получаю следующую ошибку:
Описание Resource Path Location Тип недопустимого использования неполного типа 'std :: __ async_sfinae_helper :: type {aka struct std :: future}' Sample.cpp / Cli13 / jni line 63 Проблема C / C ++
Примечание. Я установил _GLIBCXX_HAS_GTHREADS, а также GXX_EXPERIMENTAL_CXX0X вместе с ATOMIC_INT_LOCK_FREE … По умолчанию ndk использует 4.6 toolchain. Мне пришлось включить gnu-libstd ++ для 4.7 вручную в свойствах -> C / C ++ -> Включает. Есть ли какая-нибудь работа, чтобы заставить std :: async работать ???
Спасибо.
Android NDK r8e не имеет полной поддержки библиотеки времени выполнения C++11
. Вам нужно будет скомпилировать свой собственный NDK с помощью стороннего stdlib
или подождать Google, чтобы включить Clang 3.3
в NDK, который является полнофункциональным C++11
.