gpt4 book ai didi

android - Android NDK 中的 C++11 std::async 不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:44:05 24 4
gpt4 key购买 nike

我试图让以下示例代码起作用,以了解异步编程是否在 Android NDK 中起作用。虽然 NDK 有 STL <future>被识别为标题,std::async is not getting recognition 没有得到认可。我尝试使用的代码如下:

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

同时所有的包含路径都已设置到属性->路径和符号下的指定文件夹

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

最佳答案

目前 Android NDK 并未包含所有 C++11 功能。来自 NDK r9b 的 Clang 3.3 编译器是完整的 C++11 功能,但是,Android 上的 STLstdlib 不是。

要使用 Android 中最新的 C++11 功能集,请使用来自 Android NDK r9b 的 Clang 3.3 编译器。将此行放入您的 Application.mk 文件中:

NDK_TOOLCHAIN_VERSION := clang

此外,将 -std=c++11 开关添加到 LOCAL_CPPFLAGS 变量:

LOCAL_CPPFLAGS += -std=c++11

关于android - Android NDK 中的 C++11 std::async 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17616915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com