当我在c ++代码中包含boost / date_time / posix_time / posix_time.hpp时,我收到以下编译错误
/usr/include/boost/date_time/date_facet.hpp:560: error: declaration of ‘void boost::date_time::date_input_facet <date_type, CharT, InItrT>::special_values_parser(boost::date_time::special_values_parser <date_type, charT>)’ /usr/include/boost/date_time/special_values_parser.hpp:34: error: changes meaning of ‘special_values_parser’ from ‘class boost::date_time::special_values_parser <date_type, charT>’
我认为只是调用包含导致问题的因素。我有以下代码
#include "boost/date_time/posix_time/posix_time.hpp" class Chrono { public: Chrono() : _startTime(boost::posix_time::microsec_clock::local_time()) { ; } void reset() { _startTime = boost::posix_time::microsec_clock::local_time() ; } boost::posix_time::time_duration elapsed() const { return (boost::posix_time::microsec_clock::local_time() - _startTime) ; } boost::posix_time::ptime _startTime ; };
我使用gcc-4.3.4和boost x86_64 0:1.39.0-9.el5库
有人对此有所了解吗?
提前致谢
答案 0 :(得分:0)
关于您的第一个问题:您是否尝试过使用更新的编译器? gcc-4.3.4是古老的...我试过gcc-4.4.6和boost-1.46这个组合工作正常。此外,您发布的错误消息不完整,看起来至少有一半丢失。
关于第二个问题(关于你的CMakeLists.txt无效的问题):你试过一个干净的二叉树吗?如果缓存版本(CMakeCache.txt文件中的Boost_&lt; XXX&gt; _LIBRARY条目)与CMakeLists.txt文件中的版本不匹配,则会收到此类错误消息。如果您运行CMake,它找到了旧版本,然后您添加了VERSION要求,就会发生这种情况。在这种情况下,缓存的条目不会被清除,你最终会弄得一团糟。