(no subject)

Rene Brun (Rene.Brun@cern.ch)
Tue, 15 Sep 1998 14:53:43 +0200


Florian Schopper wrote:
>
> Dear Rooters,
>
> when I want to add my classes to root, I run into the following problem
> with structs:
>
> Assume the following as Headerfile.h:
> /////////////////////////////////////////////////
> #include "TObject.h"
>
> struct v550Map {
> unsigned short CRAMintr; /* CRAMS Interrupt Register W*/
> unsigned short CRAMstat; /* CRAMS Status Register RW*/
> unsigned short CRAMnumch; /* Number of channels RW*/
> unsigned short CRAMclear; /* CRAMS Module Clear W*/
> unsigned char PADDR1[226]; /* hole R */
> };
>
> class VmeModule : public TObject
> {
> private:
> int VmeAdress;
> int VmeSize;
>
> struct v550Map *Map; // Actual Registers
> struct v550Map Dummy; // If no hardware connected
>
> VmeModule(void){}
> ClassDef(VmeModule,1)
> } ;
> ////////////////////////////////////////////////////
>
> The problem starts when creating the directory files:
>
> rootcint -f vme_Cint.cxx -c testst.h LinkDef.h
> Note: operator new() masked 1c
> Note: operator delete() masked 1c
> *** Datamember VmeModule::Dummy: object has no Streamer() method (need
> manual intervention)
>
> Sometimes I get the same for the *Map too.
> I don't need Object I/O for these structs, but I can't load the .so
> when Dummy or *Map is used.
> If I uncomment the structs, everything is fine for the rest of the
> classes.
>

Florian,

In your header file, specify
ClassDef(VmeModule,0)
if you do not want I/O for your class.
You get unsatisfied external references because you do not have
an implementation file with the statement
ClassImp(VmeModule).

For more details, see URL
http://root.cern.ch/root/Using.html

Rene Brun