我有以下代码:

    #include <iostream>
#include <string>
#include <iomanip>
#include <locale>


#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/date_time/gregorian/parsers.hpp>

#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/posix_time/posix_time_io.hpp>

using namespace boost::posix_time;
using namespace boost::gregorian;


int main(int argc, char *argv[])
{
 std::string ds("2011-01-02");
date dt(from_string(ds));
date_facet *f=new date_facet("%Y-%m-%d");

 std::locale loc=std::locale(std::locale::classic(),f);
std::cout.imbue(loc);


   std::cout<<dt<<std::endl;


  return 0;

}

当我编译它时,出现以下错误:
/tmp/ccBWTFcx.o: In function `unsigned short boost::date_time::month_str_to_ushort<boost::gregorian::greg_month>(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
   b.cpp:(.text._ZN5boost9date_time19month_str_to_ushortINS_9gregorian10greg_monthEEEtRKSs[unsigned short boost::date_time::month_str_to_ushort<boost::gregorian::greg_month>(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)]+0x97): undefined reference to `boost::gregorian::greg_month::get_month_map_ptr()'
    collect2: ld returned 1 exit status

这是图书馆链接问题吗?

最佳答案

Boost date_time不仅是标题,您需要在命令行上将其链接,例如:

gcc myprogram.cpp -omyprogram -lboost_date_time

关于c++ - 使用from_string和提升日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7223809/

10-10 20:43