c++ - 如何在没有 Boost 的情况下在 Xcode C++11 中独立使用 Asio

标签 c++ xcode c++11 boost-asio

根据 this page , 在没有 Boost 的情况下使用 Asio 应该是相当简单的,但是我仍然无法使用看起来像以下任何一个的 include 编译任何文件:

#include <asio>
#include <asio.hpp>
#include <asio/version.hpp>

我已经将我的编译器设置为使用 c++11(它已经在这样做了,尽管我确实从 gnu++11 切换到了 c++11) ,并且我在我尝试的各种包含之前放置了#define ASIO_STANDALONE

除此之外,访问 c++11 Asio header 是否需要一些额外的工作?我只是在编译过程中遇到了 file not found 错误。

最佳答案

如果满足以下条件,Asio 可以在没有 Boost 的情况下使用:

  • C++11(或更高版本)编译模式下的 C++11(或更高版本)编译器。具体如何启用此模式因编译器而异。对于 GCC/clang,使用 -std=c++11 标志。对于 Xcode,在项目设置中将 C++ 语言方言设置为 C++11 或更高版本
  • Asio header 是从 think-async.com 下载的。 Asio 还不是标准库的一部分(目前)。它与 Boost 捆绑在一起,可以从作者的网站上独立获得。具体如何将 Asio 添加到您的包含路径因编译器而异。对于 GCC/clang,使用 -I/path/to/asio 或将 Asio header 放在/use/local/include 中。 Xcode 还将读取/usr/local/include,或者您可以在项目配置的 header 搜索路径部分指定自定义 header 路径。
  • #define ASIO_STANDALONE 在包含 Asio header 之前。这个定义告诉 Asio 使用 C++11 标准库特性来处理错误代码、共享指针等,而不是使用 Boost 的 polyfill。

关于c++ - 如何在没有 Boost 的情况下在 Xcode C++11 中独立使用 Asio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33544090/

相关文章:

c++ - boost thread_group 将 unique_ptr 的所有权移动到线程

c++ - std::unordered_set 的 std::unordered_map facade - 怎么样?

C++ 复合模板类工厂

c++ - 如何以符合标准的方式方便地填充混合类型的缓冲区?

ios - 错误 ITMS-90596 : "Invalid Bundle. The asset catalog at Payload"

c++ - xcode 5.1.1 提示 : ISO C++11 does not allow access declarations

c++ - Catch2:检查结果是否为 0.0 且相对错误失败

c++ - 为什么必须在哪里放置 “template”和 “typename”关键字?

xcode - (clang++) 从 libstdc++.6.0.9.dylib 中找不到符号

c++ - 动态分配 std::unique_ptr 有什么用?