7

I have the following code:

    #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;

}

and when I compile it, I get the following error:

/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

is this a library link issue?

itcplpl
  • 780
  • 4
  • 18
  • 29

1 Answers1

8

Boost date_time isn't header only, you need to link it on the command line, for example:

gcc myprogram.cpp -omyprogram -lboost_date_time
James
  • 24,676
  • 13
  • 84
  • 130
  • thanks Autopulated, I did that, now I get this error: error: ‘locale’ was not declared in this scope how do I fix that? – itcplpl Aug 28 '11 at 22:51
  • no, I just compiled it again...does it work when you compile? – itcplpl Aug 28 '11 at 22:54
  • And it's from the same code that you posted?? not declared errors are from the compiler, which runs before the linker, so you wouldn't have got to the linking stage if there was a compiler error -- unless it's from a different file, maybe? – James Aug 28 '11 at 22:56
  • you're right.....I need to go get myself a drink...I ran the wrong file....sorry. thanks it worked – itcplpl Aug 28 '11 at 23:43