Hi Ed, Instead of : rootcint -f headerdict.cpp -c CLasHeader.h do rootcint -f headerdict.cpp -c CLasHeader.h myLinkDef.h with //file myLinkDef.h #ifdef __CINT__ #pragma link off all globals; #pragma link off all classes; #pragma link off all functions; #pragma link C++ class CLasHeader+; #endif see Users Guide Rene On Fri, 13 Dec 2002, Ed Oltman wrote: > Hello, > I am using root 3.03/9a on win2k. I have a stand-alone project that > includes the class CLasHeader shown below. When I build the project, I use > > rootcint -f headerdict.cpp -c CLasHeader.h > > and I include the resulting headerdict.cpp and headerdict.h in my project > build (VC++6). In the standalong file, I do: > > TFile *f = new TFile("stream.root","recreate"); > CLasHeader h; > ... > h->Write() > > Now, in an interactive root session, I do the following: > > root [0] TFile *f = new TFile("stream.root") > root [1] .L CLasHeader.cpp++ > Info in <TWinNTSystem::ACLiC>: creating shared library > C:\str\CLasHeader_cpp.dll > 1678.cxx > 1680.cxx > 1682.cxx > 1684.cxx > svo_.cxx > Creating library CLasHeader_cpp.lib and object CLasHeader_cpp.exp > root [2] CLasHeader *ph = (CLasHeader *)f->Get("CLasHeader") > Error in <TBuffer::CheckByteCount>: object of class CLasHeader read too few > bytes: 192 instead of 196 > Warning in <TBuffer::CheckByteCount>: CLasHeader::Streamer() not in sync > with data on file, fix Streamer() > > Note: If I remove the Double_t fApertureAtten[8] from the class, the > streamer works fine. It looks like a bug... > > Ed Oltman > > > > > > > > > #ifndef _CLASHEADER_H_ > #define _CLASHEADER_H_ > #include "TObject.h" > class CLasHeader : public TObject > { > public: > CLasHeader(); > ~CLasHeader(); > void Fill(char *pFromLas); > UInt_t fHeaderSize; //Las header size in bytes > UInt_t fStreamVersion; //Stream version number > UInt_t fAcquisitionVersion; //Acquisition version number > UInt_t fHardwareConfiguration; //Hardware configuration > UInt_t fRunNumber; //Run number > UInt_t fAtomProbeId; //Atom probe ID > UInt_t fDebugFlag; //Debug flag > UInt_t fAcquisitionMode; //Acquisition mode > UInt_t fStartDate; //Start date in form YYYYMMDD e.g. 20021213 > UInt_t fStartTime; //Start time in form HHMMSS e.g. 153214 > UInt_t fMaxHitsPerPulse; //Maximum number of hits per pulse > Double_t fDeltaTofCorrection; //(TOF_X-TOF_Y)/(-2) in nsec > Double_t fNsPerLsb; //TDC least significant bit in nsec > Double_t fT0Estimate; //Estimate of T0 in nsec > Double_t fXposOffset; //Estimate of detector's x-position in ns > Double_t fYposOffset; //Estimate of detector's y-position in ns > Double_t fUnAttenApVoltage; //Unattenuated aperture voltage > Double_t fApertureAtten[8]; //Array of aperture attenuation values > Double_t fTargetEvapRate; //Initial target evaporation rate in > percent > Double_t fTargetPulseFraction; //Initial target pulse fraction in > percent > Double_t fInitialPulseFreq; //Initial target pulse frequency in Hz > #if !defined(__CINT__) || defined(__MAKECINT__) > ClassDef(CLasHeader,1) > #endif > }; > #endif > > > Here is the rootcint generated streamer: > > //__________________________________________________________________________ > ____ > void CLasHeader::Streamer(TBuffer &R__b) > { > // Stream an object of class CLasHeader. > > UInt_t R__s, R__c; > if (R__b.IsReading()) { > Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { } > TObject::Streamer(R__b); > R__b >> fHeaderSize; > R__b >> fStreamVersion; > R__b >> fAcquisitionVersion; > R__b >> fHardwareConfiguration; > R__b >> fRunNumber; > R__b >> fAtomProbeId; > R__b >> fDebugFlag; > R__b >> fAcquisitionMode; > R__b >> fStartDate; > R__b >> fStartTime; > R__b >> fMaxHitsPerPulse; > R__b >> fDeltaTofCorrection; > R__b >> fNsPerLsb; > R__b >> fT0Estimate; > R__b >> fXposOffset; > R__b >> fYposOffset; > R__b >> fUnAttenApVoltage; > R__b.ReadStaticArray(fApertureAtten); > R__b >> fTargetEvapRate; > R__b >> fTargetPulseFraction; > R__b >> fInitialPulseFreq; > R__b.CheckByteCount(R__s, R__c, CLasHeader::IsA()); > } else { > R__c = R__b.WriteVersion(CLasHeader::IsA(), kTRUE); > TObject::Streamer(R__b); > R__b << fHeaderSize; > R__b << fStreamVersion; > R__b << fAcquisitionVersion; > R__b << fHardwareConfiguration; > R__b << fRunNumber; > R__b << fAtomProbeId; > R__b << fDebugFlag; > R__b << fAcquisitionMode; > R__b << fStartDate; > R__b << fStartTime; > R__b << fMaxHitsPerPulse; > R__b << fDeltaTofCorrection; > R__b << fNsPerLsb; > R__b << fT0Estimate; > R__b << fXposOffset; > R__b << fYposOffset; > R__b << fUnAttenApVoltage; > R__b.WriteArray(fApertureAtten, 8); > R__b << fTargetEvapRate; > R__b << fTargetPulseFraction; > R__b << fInitialPulseFreq; > R__b.SetByteCount(R__c, kTRUE); > } > } > >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:23 MET