2011-08-28 45 views
7

from_string我有以下代码:使用具有升压日期

#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 

这是一个库链接的问题?

+0

是的,这是一个库的链接问题。你有没有链接增强静态库? –

+0

nope,我没有,我只是做了,我得到了我列在下面的错误.... – itcplpl

回答

8

升压DATE_TIME不仅是头,你需要给它的命令行链接,例如:

gcc myprogram.cpp -omyprogram -lboost_date_time 
+0

谢谢自动填充,我做到了,现在我得到这个错误:错误:'locale'没有在此范围内声明 我该如何解决这个问题? – itcplpl

+0

@itcplpl你是否改变了代码? – James

+0

不,我只是再次编译它...编译时它工作吗? – itcplpl