我正在研究 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/