我正在研究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尚未实现... 我安装了最新版本,现在一切都很好。
答案 0 :(得分:1)
该错误告诉您编译器无法识别标识符。当您忘记包含标题,或者标题的版本不同且不包含该标识符时,这是一种常见情况。
这是编译器生成的第一个错误吗?特别是,它抱怨它找不到任何标题?这可能表明标头不在编译器检查的路径中,在这种情况下,您可能希望在编译行中添加-Ipath_to_boost
标志。
如果在遇到该错误时可以生成正在编译的实际文件,那也很有趣。