根据 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/