2013-07-18 41 views
5

Tôi đã cố gắng sử dụng chức năng sau để kiểm tra xem std :: async có được hỗ trợ trong android ndk với Eclipse cùng với Cygwin trong cửa sổ không. Chức năng tôi đã sử dụng như sau MáySử dụng không hợp lệ loại không đầy đủ trong android ndk bằng cách sử dụng C++ 11 std :: async

: 64bit win 8 với 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"; 
} 

Tôi nhận được lỗi sau:

Mô tả Đường dẫn tài nguyên Vị trí T ype sử dụng không hợp lệ của loại không đầy đủ 'std :: __ async_sfinae_helper :: loại {aka struct std :: tương lai}' Sample.cpp/Cli13/JNI dòng 63 C/C++ Vấn đề

Lưu ý: Tôi đã thiết lập các _GLIBCXX_HAS_GTHREADS và cũng GXX_EXPERIMENTAL_CXX0X cùng với ATOMIC_INT_LOCK_FREE ... Theo mặc định, ndk sử dụng 4.6 toolchain. Tôi đã bao gồm gnu-libstd ++ cho 4.7 bằng tay trong Properties-> C/C++ -> Bao gồm. Có bất kỳ công việc xung quanh để làm cho std :: async làm việc ???

Cảm ơn bạn.

Trả lời

4

Android NDK r8e không có hỗ trợ thư viện thời gian chạy đầy đủ của C++11. Bạn sẽ cần phải biên dịch NDK của riêng mình bằng cách sử dụng một số bên thứ ba stdlib hoặc đợi Google để bao gồm Clang 3.3 trong NDK là C++11 tính năng hoàn chỉnh.

Các vấn đề liên quan