Re: [ROOT] std:vector in commandline

From: Alessandro Thea (Alessandro.Thea@ge.infn.it)
Date: Thu Nov 18 2004 - 12:24:05 MET


Hi Rene,
have you tried loading libtest.so before executing teststl.C?

.L libtest.so
.x teststl.C

In fact I've used precompiled root 4.00.08  for SLC3.

Alessandro


Rene Brun wrote:

>Hi Alessandro,
>
>I have no problems with your test on SLC3. Your test script gives:
>root [0] .x teststl.C
>2
>a[0]=12
>a[1]=1e-05
>
>It is likely that you installed ROOT from source and did not run
>  make cintdlls
>that creates the necessary precompiled headers/libs to deal with STL in CINT.
>
>Rene Brun
>
>Alessandro Thea wrote:
>  
>
>>Hi all,
>>I've found a weird behaviour in root command line when I try to use
>>std::vectors on a Scientific Linux machine.
>>The problem appears when I create a std::vector<double> after having
>>loaded a library in which a std::vector<double> is used.
>>Needless to say, it works perfecly if I load no libraries.
>>
>>To reproduce this problem I made a script, teststl.C which creates,
>>fills, and reads a std::vector<double>.
>>Then I set up class, MyClass which contains just a vector<double>* and I
>>created the shared library, libtest.so.
>>
>>This is what I get just running the script:
>>   *******************************************
>>   *                                         *
>>   *        W E L C O M E  to  R O O T       *
>>   *                                         *
>>   *   Version   4.00/08      10 July 2004   *
>>   *                                         *
>>   *  You are welcome to visit our Web site  *
>>   *          http://root.cern.ch            *
>>   *                                         *
>>   *******************************************
>>
>>Compiled for linux with thread support.
>>
>>CINT/ROOT C/C++ Interpreter version 5.15.138, May 23 2004
>>Type ? for help. Commands must be C++ statements.
>>Enclose multiple statements between { }.
>>root [0] .x teststl.C
>>2
>>a[0]=12
>>a[1]=1e-05
>>root [1]
>>
>>and this is what happens if I load libtest.so, even f i dont' use
>>MyClass at all:
>>
>>   *******************************************
>>   *                                         *
>>   *        W E L C O M E  to  R O O T       *
>>   *                                         *
>>   *   Version   4.00/08      10 July 2004   *
>>   *                                         *
>>   *  You are welcome to visit our Web site  *
>>   *          http://root.cern.ch            *
>>   *                                         *
>>   *******************************************
>>
>>Compiled for linux with thread support.
>>
>>CINT/ROOT C/C++ Interpreter version 5.15.138, May 23 2004
>>Type ? for help. Commands must be C++ statements.
>>Enclose multiple statements between { }.
>>root [0] .L libtest.so
>>root [1] .x teststl.C
>>Error: Can't call vector<double,allocator<double> >::push_back(12.) in
>>current scope FILE:teststl.C LINE:5
>>Possible candidates are...
>>filename       line:size busy function type and name  (in
>>vector<double,allocator<double> >)
>>Error: Symbol a is not defined in current scope  FILE:teststl.C LINE:5
>>Error: Failed to evaluate a.push_back(12.)Possible candidates are...
>>filename       line:size busy function type and name
>>*** Interpreter error recovered ***
>>root [2]
>>
>>I found that this error appears just on Scientific Linux v3, with gcc
>>version 3.2.3 20030502 (Red Hat Linux 3.2.3-39). I've tried with both
>>root 4.00.06 and root 4.00.08.
>>
>>On the contrary, it works perfectly on RedHat 9, gcc 3.2.2 and RedHat
>>7.3 gcc 2.96.
>>Do you have any idea?
>>
>>I have attached the code that reproduces the problem.
>>Thanks and Regards,
>>Alessandro
>>
>>--
>>__________________________________________________________________________
>>
>>   Alessandro Thea
>>   Ph.D. Student
>>   Dipartimento di Fisica dell'Universita' di Genova and
>>   Istituto Nazionale di Fisica Nucleare, Sezione di Genova,
>>   Via Dodecaneso 33, I-16146, Genova, Italia.
>>
>>   Tel : +39 010 3536468               E-Mail: Alessandro.Thea@ge.infn.it
>>   Cell: +39 349 2724919
>>__________________________________________________________________________
>>
>>  --------------------------------------------------------------------------------
>>                  Name: libtest.tgz
>>   libtest.tgz    Type: unspecified type (application/octet-stream)
>>              Encoding: base64
>>    
>>


-- 
__________________________________________________________________________

  Alessandro Thea
  Ph.D. Student
  Dipartimento di Fisica dell'Universita' di Genova and
  Istituto Nazionale di Fisica Nucleare, Sezione di Genova,
  Via Dodecaneso 33, I-16146, Genova, Italia.
  
  Tel: +39 010 3536468               E-Mail: Alessandro.Thea@ge.infn.it 
__________________________________________________________________________



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:10 MET