Bonjour,

Sur un serveur AIX avec le compilateur C/C++ d'IBM XLC j'ai installé (mais non compilé) la bibliothèque Boost.

J'ai pris le code exemples suivant sur les fonctions qui m'intéressent (dates) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
#include <iostream>
#include <string>
 
#include "boost/date_time/gregorian/gregorian.hpp"
 
int
  main()
  {
 
    using namespace boost::gregorian;
 
    try {
      // The following date is in ISO 8601 extended format (CCYY-MM-DD)
      std::string s("2001-10-9"); //2001-October-09
      date d(from_simple_string(s));
      std::cout << to_simple_string(d) << std::endl;
 
      //Read ISO Standard(CCYYMMDD) and output ISO Extended
      std::string ud("20011009"); //2001-Oct-09
      date d1(from_undelimited_string(ud));
      std::cout << to_iso_extended_string(d1) << std::endl;
 
      //Output the parts of the date - Tuesday October 9, 2001
      date::ymd_type ymd = d1.year_month_day();
      greg_weekday wd = d1.day_of_week();
      std::cout << wd.as_long_string() << " "
                << ymd.month.as_long_string() << " "
                << ymd.day << ", " << ymd.year
                << std::endl;
 
      //Let's send in month 25 by accident and create an exception
      std::string bad_date("20012509"); //2001-??-09
      std::cout << "An expected exception is next: " << std::endl;
      date wont_construct(from_undelimited_string(bad_date));
      //use wont_construct so compiler doesn't complain, but you wont get here!
      std::cout << "oh oh, you shouldn't reach this line: "
                << to_iso_string(wont_construct) << std::endl;
    }
    catch(std::exception& e) {
      std::cout << "  Exception: " <<  e.what() << std::endl;
    }
 
 
    return 0;
  }
J'ai compilé avec le makefile suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
TARGETLIB       = lib_sde_routines.exe
CODESRC         = sde_routines.c
TARGETOBJ       = sde_routines.o
 
CC          = /usr/vacpp/bin/xlC_r
CCOPTIONS   = -+ -O -g  -I /applis/dsgu/datastage/data/lib/boost/boost_1_39_0
LIBCC       = $(CC)
LDOPTIONS   = -G -qmkshrobj=1000
 
.SUFFIXES: .c .o
A la compilation j'ai les warnings suivants :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
        /usr/vacpp/bin/xlC_r -+ -O -g  -I /applis/dsgu/datastage/data/lib/boost/boost_1_39_0 -c sde_routines.c -o sde_routines.o
"/applis/dsgu/datastage/data/lib/boost/boost_1_39_0/boost/date_time/special_values_formatter.hpp", line 44.46: 1540-2907 (W) The subscript 3 is out of range. The valid range is 0 to 2.
"/applis/dsgu/datastage/data/lib/boost/boost_1_39_0/boost/date_time/special_values_formatter.hpp", line 41.5: 1540-0700 (I) The previous message was produced while processing "boost::date_time::special_values_formatter<char,std::ostreambuf_iterator<char,std::char_traits<char> > >::special_values_formatter()".
"/applis/dsgu/datastage/data/lib/boost/boost_1_39_0/boost/date_time/date_facet.hpp", line 86.7: 1540-0700 (I) The previous message was produced while processing "boost::date_time::date_facet<boost::gregorian::date,char,std::ostreambuf_iterator<char,std::char_traits<char> > >::date_facet(::size_t)".
"/applis/dsgu/datastage/data/lib/boost/boost_1_39_0/boost/date_time/gregorian/gregorian_io.hpp", line 62.30: 1540-0700 (I) The previous message was produced while processing "boost::gregorian::operator<< <char,std::char_traits<char> >(basic_ostream<char,std::char_traits<char> > &, const date &)".
"/applis/dsgu/datastage/data/lib/boost/boost_1_39_0/boost/date_time/gregorian/conversion.hpp", line 43.10: 1540-0700 (I) The previous message was produced while processing "boost::gregorian::to_tm(const date &)".
    1500-029: (W) WARNING: subprogram boost::date_time::year_month_day_base<boost::gregorian::greg_year,boost::gregorian::greg_month,boost::gregorian::greg_day>::year_month_day_base(greg_year, greg_month, greg_day) could not be inlined into boost::date_time::gregorian_calendar_base<boost::date_time::year_month_day_base<boost::gregorian::greg_year,boost::gregorian::greg_month,boost::gregorian::greg_day>,unsigned long>::from_day_number(date_int_type).
    1500-029: (W) WARNING: subprogram std::vector<int,std::allocator<int> >::_Construct<int *>(int *, int *, input_iterator_tag) could not be inlined into boost::offset_separator::offset_separator(int *, int *, bool, bool).
    1500-029: (W) WARNING: subprogram boost::date_time::year_month_day_base<boost::gregorian::greg_year,boost::gregorian::greg_month,boost::gregorian::greg_day>::year_month_day_base(greg_year, greg_month, greg_day) could not be inlined into boost::date_time::date<boost::gregorian::date,boost::gregorian::gregorian_calendar,boost::gregorian::date_duration>::date(year_type, month_type, day_type).
    1500-029: (W) WARNING: subprogram boost::date_time::date<boost::gregorian::date,boost::gregorian::gregorian_calendar,boost::gregorian::date_duration>::date(year_type, month_type, day_type) could not be inlined into boost::gregorian::date::date(year_type, month_type, day_type).
    1500-029: (W) WARNING: subprogram boost::date_time::gregorian_calendar_base<boost::date_time::year_month_day_base<boost::gregorian::greg_year,boost::gregorian::greg_month,boost::gregorian::greg_day>,unsigned long>::end_of_month_day(year_type, month_type) could not be inlined into boost::gregorian::date::date(year_type, month_type, day_type).
    1500-029: (W) WARNING: subprogram std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Assign<std::_Ptrit<char,long,const char *,const char &,char *,char &> >(_Ptrit<char,long,const char *,const char &,char *,char &>, _Ptrit<char,long,const char *,const char &,char *,char &>, input_iterator_tag) could not be inlined into boost::offset_separator::operator() <std::_Ptrit<char,long,const char *,const char &,char *,char &>,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >(_Ptrit<char,long,const char *,const char &,char *,char &> &, _Ptrit<char,long,const char *,const char &,char *,char &>, basic_string<char,std::char_traits<char>,std::allocator<char> > &).
    1500-029: (W) WARNING: subprogram std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Assign<std::_Ptrit<char,long,const char *,const char &,char *,char &> >(_Ptrit<char,long,const char *,const char &,char *,char &>, _Ptrit<char,long,const char *,const char &,char *,char &>, input_iterator_tag) could not be inlined into boost::char_separator<char,std::char_traits<char> >::operator() <std::_Ptrit<char,long,const char *,const char &,char *,char &>,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >(_Ptrit<char,long,const char *,const char &,char *,char &> &, _Ptrit<char,long,const char *,const char &,char *,char &>, basic_string<char,std::char_traits<char>,std::allocator<char> > &).
    1500-029: (W) WARNING: subprogram std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Assign<std::_Ptrit<char,long,const char *,const char &,char *,char &> >(_Ptrit<char,long,const char *,const char &,char *,char &>, _Ptrit<char,long,const char *,const char &,char *,char &>, input_iterator_tag) could not be inlined into boost::char_separator<char,std::char_traits<char> >::operator() <std::_Ptrit<char,long,const char *,const char &,char *,char &>,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >(_Ptrit<char,long,const char *,const char &,char *,char &> &, _Ptrit<char,long,const char *,const char &,char *,char &>, basic_string<char,std::char_traits<char>,std::allocator<char> > &).
        /usr/vacpp/bin/xlC_r -G -qmkshrobj=1000  sde_routines.o -o lib_sde_routines.exe
Target "all" is up to date.
J'ai l'erreur suivante à l'exécution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
exec(): 0509-036 Cannot load program ./lib_sde_routines.exe because of the following errors:
        0509-151 The program does not have an entry point or
                   the o_snentry field in the auxiliary header is invalid.
        0509-194 Examine file headers with the 'dump -ohv' command.
Je ne sais pas pourquoi j'ai tous ces warning de compilation du code exemple de boost et quel est le problème à l'exécution.