错误:命名空间'boost :: asio'中的'signal_set'没有命名类型

时间:2011-08-19 17:18:26

标签: 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时得到了这条消息:

  

错误:命名空间'boost :: asio'中的'signal_set'没有命名类型

我使用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尚未实现... 我安装了最新版本,现在一切都很好。

1 个答案:

答案 0 :(得分:1)

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

这是编译器生成的第一个错误吗?特别是,它抱怨它找不到任何标题?这可能表明标头不在编译器检查的路径中,在这种情况下,您可能希望在编译行中添加-Ipath_to_boost标志。

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