First of all
there is ROOT HOWTO's
pages and ROOT
Tutorials on subject
and
related issues:
Below is description of my own experience:
class Wavelet : public TObject
ClassDef(Wavelet,1)
So that the minimum header file for Wavelet class should look like:
wavelet.h
rootcint -f wave_dict.cc -c < list of all header files >
This command will generate files wave_dict.cc and wave_dict.h which also must be compiled with the same options as you own code.
To have more control on dictionary generation I created the file wavelet_LinkDef.h (xxx_LinkDef.h is a required style) which contains:
wavelet_LinkDef.h
It's contents looks cryptic, but it works. All your classes should be listed here. Minus sign after class name means that this class has custom (i.e. written by me) function Streamer() (look How to Write Objects to a File for details). This file must be at the end of list of header files in command string for rootcint.
ld -shared -o wavelet.so < list of all PIC files >
root [0] gSystem->Load("wavelet.so");
Check if your class is available by command:
root [1] .class Wavelet
If everything right you should get something like:
===========================================================================
class Wavelet //Wavelet Base Class
size=0xc
(tagnum=464,voffset=-1,isabstract=0,parent=-1,gcomp=0,=~cd=0)
List of base class--------------------------------------------------------
0x0 public: TObject //Basic ROOT object
List of member variable---------------------------------------------------
Defined in Wavelet
0x0 private: static TClass* fgIsA
List of member function---------------------------------------------------
filename line:size busy function type and name (in Wavelet)
(compiled) 0:0 0 public: Wavelet Wavelet(void); //Constructor
(compiled) 0:0 0 public: const char* DeclFileName(void);
(compiled) 0:0 0 public: int DeclFileLine(void);
(compiled) 0:0 0 public: const char* ImplFileName(void);
(compiled) 0:0 0 public: int ImplFileLine(void);
....