Tôi đã cố gắng lấy mã mẫu làm việc sau để biết liệu lập trình không đồng bộ có đang hoạt động trong NDK của Android hay không. Mặc dù NDK có STL <future>
được công nhận là tiêu đề, nhưng không nhận được thông báo std::async
. Mã Tôi cố gắng để sử dụng là như sau:C++ 11 std :: không đồng bộ trong Android NDK không hoạt động
#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";
}
Ngoài ra tất cả các bao gồm đường dẫn đã được thiết lập vào thư mục quy định dưới Properties-> Paths và biểu tượng
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
vẫn tôi không nhận được nó ... Trong thực tế tôi không thể sử dụng ngay cả những enum được định nghĩa trong .... Có phải là vấn đề với Eclipse hay ndk hoặc thư viện mà tôi không biết –
user2508941
Đây là vấn đề với NDK. Chỉ cần chờ cập nhật. Clang 3.3 và stdlib mới sẽ có mặt ở đó một ngày. –
@ user2508941 NDK r9 đã hết, với clang 3.3. – Samveen