提前抱歉提出一个愚蠢的问题 - 我对这一切都很陌生.
所以我从这里下载了asio ,并尝试#include asio.hpp,但得到了以下错误;
fatal error: boost/config.hpp: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我觉得这很奇怪,因为它假设独立于Boost.我捅了一下,看到我需要定义ASIO_STANDALONE,我很快就做了,只是遇到了更多的错误,它试图#include来自Boost的其他东西.
是否有一个很重要的列表,列出了所有我需要的#define来告诉它是独立的还是什么?这将非常有帮助.
小智 11
这是一个老问题,但是我在Visual Studio 2013和Asio 1.10.6中遇到了同样的问题.在Visual中,没有用于c ++ 11功能的开关或编译器标志.
即使#define ASIO_STANDALONEAsio需要Boost.
解决方案是手动指定我们的编译器符合c ++ 11.只需添加:
#define ASIO_STANDALONE
#define ASIO_HAS_STD_ADDRESSOF
#define ASIO_HAS_STD_ARRAY
#define ASIO_HAS_CSTDINT
#define ASIO_HAS_STD_SHARED_PTR
#define ASIO_HAS_STD_TYPE_TRAITS
#include <path_to_asio/asio.hpp>
Run Code Online (Sandbox Code Playgroud)
正如Asio 网站上所述:
使用C++ 11编译器时,现在可以使用大多数 Asio而不依赖于Boost头文件或库.要以这种方式使用Asio,请
ASIO_STANDALONE在编译器命令行上或作为项目选项的一部分进行定义.
因此,即使ASIO_STANDALONE定义了,Asio将在以下情况下使用Boost:
使用asio-1.10.2,以下程序:
#include <asio.hpp>
int main()
{
asio::io_service io_service;
}
Run Code Online (Sandbox Code Playgroud)
使用-DASIO_STANDALONE -std=c++11编译器标志编译gcc 4.8.1 .如果不指定编译器使用c ++ 11,则在尝试包含Boost头文件时编译将失败.
| 归档时间: |
|
| 查看次数: |
7788 次 |
| 最近记录: |