c++ - 错误 : ‘signal_set’ in namespace ‘boost::asio’ does not name a type

标签 c++ boost compiler-errors boost-asio

我正在研究 Boost::asio 库 v1.47 的第一个 HTTP 服务器示例。 http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/examples.html

我在使用 gcc 4.5.2 版编译时收到了这条消息:

error: ‘signal_set’ in namespace ‘boost::asio’ does not name a type

我使用 Jam,这个 jamfile :

C++ = g++ ;
LINK = $(C++) ;
LINKLIBS = -lboost_system-mt -lboost_filesystem-mt ;
Main node : main.cpp server.cpp reply.cpp request_handler.cpp request_parser.cpp connection.cpp connection_manager.cpp ;

我认为代码是正确的,因为我从一开始就得到了错误,没有修改示例源,我只是注释了之前解决问题的行。 但是现在,我需要信号。

所以我想我的 Jamfile 出了点问题。

我发现了另一个与我相关的问题,但它对我没有帮助: Cannot compile when trying to utilize boost::asio::signal_set

编辑: 事实上我想通了: 我正在使用的 Ubuntu 只提供了 1.42 版的 boost,而 boost::asio::signals 还没有实现...... 我安装了最新版本,现在一切正常。

最佳答案

该错误告诉您编译器 无法识别该标识符。当您忘记包含一个 header ,或者如果您的 header 版本不同并且不包含该标识符时,这是一种常见的情况。

这是编译器产生的第一个错误吗?特别是,它是否提示过找不到任何标题?这可能表明 header 不在编译器正在检查的路径中,在这种情况下,您可能需要将 -Ipath_to_boost 标志添加到编译行。

如果您能在遇到该错误时生成正在编译的实际文件,那也会很有趣。

关于c++ - 错误 : ‘signal_set’ in namespace ‘boost::asio’ does not name a type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7125105/

相关文章:

c++ - 为什么 boost::future<T>::then() 产生一个新线程?

c++11 和 boost_filesystem cout 和 printf 不起作用

python - IndentationError : expected an indented block Can someone help me

java - 使用未初始化的变量时会发生什么类型的错误?

c++ - Poco DateTimeFormatter - 使用当前时区打印时间戳

C++ 入门第 14 章 readStr 示例无法在 Visual Studio 2019 中编译

c++ - 从 cin 中存储 '\n' 字符

c++ - 字符串类中未声明的标识符

c++ - 在使用 boost 的多线程 c++ 程序中,有没有办法获取指向当前线程的指针?

java - 无法将xmlReader转换为解析器