使用boost::posix_time时发生编译错误

Compilation error when using boost::posix_time

本文关键字:编译 错误 time boost posix 使用      更新时间:2023-10-16

当我在我的c++代码中包含boost/date_time/posix_time/posix_time.hpp时,我得到了以下编译错误

/usr/include/boost/date_time/date_facet.hpp:560:错误:声明"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.hp:34:error:将'special_values.parser'的含义从'class boost::date_time::special_vvalues_parser<date_type,charT>'

我认为,这只是呼吁包括,这是造成问题的原因。我有以下代码

#包括"boost/date_time/posix_time/posix_time.hpp"ClassChrono{public:Chrono():_startTime(boost::posix_time::microc_clock::local_time()){;}void reset(){_startTime=boost::posix_time::microc_clock::local_time();}boost::posix_time::time_duration elapsed()const{return(boost::posix_time::microsc_clock::local_time()-startTime);}boost::posix_time::ptime_startTime;};

我使用gcc-4.3.4和boost x86_64 0:1.39.0-9.el5库

有人对此有想法吗?

提前感谢

关于你的第一个问题:你试过使用更新的编译器吗?gcc-4.3.4确实很古老。。。我尝试了gcc-4.4.6和boost-1.46,这种组合效果很好。此外,您发布的错误消息不完整,看起来至少有一半丢失了。

至于第二个问题(关于您的CMakeLists.txt不起作用的问题):您尝试过使用干净的二进制树吗?如果缓存的版本(CMakeCache.txt文件中的Boost_<XXX>_LIBRARY条目)与CMakeLists.txt文件中的版本不匹配,则会收到此类错误消息。如果你运行CMake,它找到了旧版本,然后你添加了version要求,就会发生这种情况。在这种情况下,缓存的条目不会被清除,最终会出现混乱。