Re: [ROOT] StreamerInfo::BuildCheck Warning

From: Rene Brun (Rene.Brun@cern.ch)
Date: Fri May 09 2003 - 17:11:07 MEST


Hi Ed,

The message means that you have changed something in your header file
between writing and reading, but you did not upgrade your version number.
Could you make a diff between the header file when you wrote the file
and your current header file?

Rene

Ed Oltman wrote:
> 
> Hello,
> 
> I have a root based DLL that I use to write root files - several
> objects are written, including a CLasHeader object as a member of
> another object. When I use this EXACT SAME DLL to read the root
> file I wrote, I get the following warning.
> 
> Warning in <TStreamerInfo::BuildCheck>:
>         The StreamerInfo of class CLasHeader read from file
> v:\Leap\HitData\R03067.rhit
>         has the same version (=4) as the active class but a different
> checksum.
>         You should update the version to ClassDef(CLasHeader,5).
>         Do not try to write objects with the current class definition,
>         the files will not be readable.
> 
> I'm puzzled - I use the same class definitions to
> read and write, but when I read I'm told I should'nt use it to
> write.  Please advice, Thanks.
> 
> Ed Oltman
> 
> Here's a bunch of Details:
> 
> I am using win32 version of root v3.05/3 on Win2k - binaries from cern. I
> have a dll (VC 6.0) which contains all of my classes - I built it w/ likdef
> containing the line:
> 
> #pragma link C++ class CLasHeader-;
> 
> where CLasHeader, derived from TObject,  contains
> 
> #if !defined(__CINT__)  || defined(__MAKECINT__)
>         ClassDef(CLasHeader,4)
> #endif
> 
> in the class definition and the Streamer is
> 
> void CLasHeader::Streamer(TBuffer &R__b)
> {
>    // Stream an object of class CLasHeader.
> 
>    if (R__b.IsReading()) {
>       CLasHeader::Class()->ReadBuffer(R__b, this);
>    } else {
>       CLasHeader::Class()->WriteBuffer(R__b, this);
>    }
> }
> 
> Here's my interaction with root when I try to read the file:
> 
> C:\Release 6.04.73\CompiledRoot>root
>  the current keyboard layout is 437
>   *******************************************
>   *                                         *
>   *        W E L C O M E  to  R O O T       *
>   *                                         *
>   *   Version   3.05/03     11 March 2003   *
>   *                                         *
>   *  You are welcome to visit our Web site  *
>   *          http://root.cern.ch            *
>   *                                         *
>   *******************************************
> 
> Compiled for win32.
> 
> CINT/ROOT C/C++ Interpreter version 5.15.78, Mar 3 2003
> Type ? for help. Commands must be C++ statements.
> Enclose multiple statements between { }.
> root [0] .L analysis.dll
> root [1] TFile *f = new TFile("v:\\Leap\\HitData\\R03067.rhit")



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:11 MET