c++ - std::async([](){ std::cout<< "Hello "; }) 构建错误

标签 c++ build

CppCon 2015: Detlef Vollmann “Executors for C++ - A Long Story ..."从这个例子开始:

std::async([](){ std::cout << "Hello "; });
std::async([](){ std::cout << "World!\n"; });

C++ reference显示std::async<future>std::cout<iostream> .构建工作缺少什么?

$ cat >hw.cpp <<EOF
> #include <iostream>
> int main(){
>     std::cout << "Hello World!\n";
> }
> EOF
$ clang++ -std=c++14 hw.cpp
$ ./a.out
Hello World!
$ cat >cppcon15.cpp <<EOF
> #include <future>
> #include <iostream>
> int main(){
>     std::async([](){ std::cout << "Hello "; });
>     std::async([](){ std::cout << "World!\n"; });
> }
> EOF
$ clang++ -std=c++14 cppcon15.cpp
/tmp/cppcon15-4f0a58.o: In function `std::thread::thread<std::__future_base::_Async_state_impl<std::_Bind_simple<main::$_1 ()>, void>::_Async_state_impl(std::_Bind_simple<main::$_1 ()>&&)::{lambda()#1}>(std::__future_base::_Async_state_impl<std::_Bind_simple<main::$_1 ()>, void>::_Async_state_impl(std::_Bind_simple<main::$_1 ()>&&)::{lambda()#1}&&)':
cppcon15.cpp:(.text+0x2cf6): undefined reference to `pthread_create'
/tmp/cppcon15-4f0a58.o: In function `std::thread::thread<std::__future_base::_Async_state_impl<std::_Bind_simple<main::$_0 ()>, void>::_Async_state_impl(std::_Bind_simple<main::$_0 ()>&&)::{lambda()#1}>(std::__future_base::_Async_state_impl<std::_Bind_simple<main::$_0 ()>, void>::_Async_state_impl(std::_Bind_simple<main::$_0 ()>&&)::{lambda()#1}&&)':
cppcon15.cpp:(.text+0x6bb6): undefined reference to `pthread_create'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

最佳答案

您需要使用 -pthread 进行编译,以便链接器允许您使用异步/ future /线程功能。

关于c++ - std::async([](){ std::cout<< "Hello "; }) 构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34821747/

相关文章:

c++ - 从 DevC++ 转向命令行编译

c++ - 搜索空字符串时 find vs find_first_of

c++ - 带有 vector 值声明的 Netbeans IDE 8.0.2 C++ 代码帮助问题映射

android - 在模拟器 (GOLDFISH) 上编译并运行 CM 10.2

build - CMake 根据库的存在有条件地构建目标

javascript - Storybook webpack 绝对导入

c++ - 在 opencv 中使用 Mat::at(i,j) 获取二维 Mat 对象

java - 如何将 java 函数指针传递给 C++ native 代码

docker - docker build输出的目的是什么?

build - 构建共享库时,是否只需要依赖库的头文件?