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