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

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

本文关键字:set 类型 中的 boost 命名空间 asio 错误 signal      更新时间:2023-10-16

我正在研究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弄乱了。

我发现了另一个与我的问题相关的问题,但它没有帮助我:当尝试使用boost::asio::signal_set

时无法编译编辑:

事实上,我发现:我使用的Ubuntu只提供1.42版本的boost, boost::asio::信号还没有实现…我安装了最新版本,现在一切正常。

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

这是编译器产生的第一个错误吗?特别是,它是否抱怨它无法定位任何头文件?这可能表明头文件不在编译器正在检查的路径中,在这种情况下,您可能需要在编译行中添加-Ipath_to_boost标志。

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