c++ - 如何在 C++17 中使用 <execution> 库

标签 c++ c++17

学习如何使用 c++17 中的执行库。我正在使用 Linux,但也在我的 Mac 上尝试过。我收到此错误:

fatal error: 'execution' file not found



当我在两个操作系统中编译时。

我宁愿坚持使用我输入的 linux:
g++ -g -std=c++17 ModuleDevelopmentStage13.cc -lboost_system -lboost_thread -pthread
也许我需要在 -l.... 中添加更多库这里的争论。我是 C++ 的新手,不知道在哪里可以找到要添加的内容?我已经安装了 LLVM 并在类似的帖子上尝试了一些选项,但没有运气。有什么建议吗?

所以在我的 Mac 上我做了 gcc -v 并得到:
gcc -v Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1 Apple LLVM version 10.0.0 (clang-1000.11.45.5) Target: x86_64-apple-darwin18.6.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
好的,更新 - 我现在切换到通过自制软件安装的 gcc-9.1。

没有像以前那样的“包含”错误,但是当我尝试编译使用 c++17 库的简单代码示例时,我现在遇到了这个问题:
g++-9 -std=c++17 example.cc In file included from /usr/local/Cellar/gcc/9.1.0/include/c++/9.1.0/pstl/parallel_backend.h:14, from /usr/local/Cellar/gcc/9.1.0/include/c++/9.1.0/pstl/algorithm_impl.h:25, from /usr/local/Cellar/gcc/9.1.0/include/c++/9.1.0/pstl/glue_execution_defs.h:52, from /usr/local/Cellar/gcc/9.1.0/include/c++/9.1.0/execution:3, from example.cc:6: /usr/local/Cellar/gcc/9.1.0/include/c++/9.1.0/pstl/parallel_backend_tbb.h:19:10 fatal error: tbb/blocked_range.h: No such file or directory 19 | #include <tbb/blocked_range.h> | ^~~~~~~~~~~~~~~~~~~~~ compilation terminated.
我找到了丢失的库并编译如下:
g++-9 -std=c++17 example.cpp -I/usr/local/Cellar/tbb/2019_U8/include/ -I/usr/local/Cellar/tbb/2019_U8/lib/
我收到以下错误: Undefined symbols for architecture x86_64: "tbb::interface7::internal::task_arena_base::internal_current_slot()", referenced from: tbb::interface7::task_arena::current_thread_index() in ccnPixdL.o "tbb::interface7::internal::isolate_within_arena(t..........
接下来是许多类似的行......感觉我更接近但不知道如何继续这一行?

已解决 g++-9 -std=c++17 example.cpp -I/usr/local/Cellar/tbb/2019_U8/include/ -L/usr/local/Cellar/tbb/2019_U8/lib/ -ltbb

最佳答案

您需要安装 tbb 库。

在 Ubuntu/Linux 上:

$ sudo apt update
$ sudo apt install libtbb-dev

在带有 Homebrew 的 Mac 上:
$ brew install tbb

然后在 g++ 中链接运行时库:
g++ -g -std=c++17 ModuleDevelopmentStage13.cc -lboost_system -lboost_thread -pthread -ltbb

关于c++ - 如何在 C++17 中使用 <execution> 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57084789/

相关文章:

c++ - 如何将几个 STL 列表合二为一但仅具有某些属性

c++ - 点运算符和 get 方法之间的区别

c++ - 模板化运行时检查调用包装器以检测输入参数或返回值中的转换溢出

c++ - 折叠逗号如何工作?

c++ - 为什么min仍然在constexpr中提示?

c++ - 有没有像 "#pragma ignore this sourcefile"这样的 MSVC 编译器?

c++ - 尝试使用 Boost.Filesystem 但它似乎没有链接?

c++ - CUDA编译错误: class template has already been defined

c++ - 在 Visual Studio 中使用内联变量

C++17:integer_sequence 用法与编译错误