Paul, if your compiled code doesn'thave any references to the symbols defined in the dictionary, the object module from the dictionary may not be linked in. When (in your example #2) you load the library explicitly, you get the correct behaviour. Therefore you may - either to compile the dictionary into a separate library and to load it in at run-time using gSystem->Load("your_library"); from the compiled code - or to force linker to link the dictionary by declaring one of the global symbols defined in the dictionary as external in your code. regards, pasha -------------------------------------------------------------------------------- Paul M. Eugenio writes: > Dear Rooters, > > I have been have trouble making root programs for different platforms other > than decunix with g++(where the programs now run). At first I thought I was > having problems with the native Sun c++ compiler, but now I experiencing the > same problems using a SGI native c++ compiler. > > When I run the program my class dictionaries are not found (see #1 below), > but when I run a macro in root/cint (see #2 below) the dictionaries are found > and the macro run fine. > > I have used the Makefile and the rules for Event found in the test directory. > In addition I have created MyClass LinkDef.hLinkDef.h files modeled after > EventLinkDef.h > > > Could I be missing something in the make? I'm lost as to what is wrong. I > believe that I have all the ingredients to add my classes --and it does work > on one platform.... > > > > > For completness, I've included my Makefile #3 and make output #4 > > > > > > ####### #1 > physgi03f 155% dumpRdt -n2 -iEvent.rdt -L > Dumping 2events > Opening file Event.rdt for input > Warning in <TClass::TClass>: no dictionary for class TMCFastHepParticle is > availbble > Warning in <TClass::TClass>: no dictionary for class TMCFastHepEvt is availbble > Warning in <TClass::TClass>: no dictionary for class TMCFastTOF is availbble > Warning in <TClass::TClass>: no dictionary for class TMCFastOfflineTrack is > availbble > List the Branches in the Tree > hepevt > trace > offtrk > > ######## #2 > CINT/ROOT C/C++ Interpreter version 5.13.78, Oct 22 1998 > root [0] gSystem.Load("libTMCFast.so"); > root [1] .class TMCFastHepParticle > =========================================================================== > class TMCFastHepParticle //Needed by ROOT > size=0x70 > (tagnum=361,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 TMCFastHepParticle > 0x0 private: Int_t fisthep //The Particle status > 0x0 private: Int_t fidhep //The particle id > 0x0 private: Int_t fjmohep[] //The position of the mother particles > 0x0 private: Int_t fjdahep[] //Position of the first daughter... > 0x0 private: Double_t fphep[] //4-Momentum, mass > 0x0 private: Double_t fvhep[] //Vertex information, time > 0x0 private: static TClass* fgIsA > List of member function--------------------------------------------------- > Defined in TMCFastHepParticle > filename line:size busy function type and name > (compiled) 0:0 0 public: TMCFastHepParticle TMCFastHepParticle(void); > (compiled) 0:0 0 public: TMCFastHepParticle TMCFastHepParticle(heppart_t* part); > (compiled) 0:0 0 public: Int_t GetIsthep(void) const; > (compiled) 0:0 0 public: Int_t GetIdhep(void) const; > (compiled) 0:0 0 public: Int_t GetJmohep(Int_t j) const; > -- Press return for more -- (input [number] of lines, Cont,Step,More) 0 > (compiled) 0:0 0 public: Int_t GetJdahep(Int_t j) const; > (compiled) 0:0 0 public: Double_t GetMass(void) const; > (compiled) 0:0 0 public: Double_t GetPx(void) const; > (compiled) 0:0 0 public: Double_t GetPy(void) const; > (compiled) 0:0 0 public: Double_t GetPz(void) const; > (compiled) 0:0 0 public: Double_t GetE(void) const; > (compiled) 0:0 0 public: Double_t GetVx(void) const; > (compiled) 0:0 0 public: Double_t GetVy(void) const; > (compiled) 0:0 0 public: Double_t GetVz(void) const; > (compiled) 0:0 0 public: Double_t GetVt(void) const; > (compiled) 0:0 0 public: void SetIsthep(Int_t n); > (compiled) 0:0 0 public: void SetIdhep(Int_t n); > (compiled) 0:0 0 public: void SetJmohep(Int_t j,Int_t n); > (compiled) 0:0 0 public: void SetJdahep(Int_t j,Int_t n); > (compiled) 0:0 0 public: void SetMass(Double_t x); > (compiled) 0:0 0 public: void SetPx(Double_t x); > (compiled) 0:0 0 public: void SetPy(Double_t x); > (compiled) 0:0 0 public: void SetPz(Double_t x); > (compiled) 0:0 0 public: void SetE(Double_t x); > (compiled) 0:0 0 public: void SetVx(Double_t x); > (compiled) 0:0 0 public: void SetVy(Double_t x); > (compiled) 0:0 0 public: void SetVz(Double_t x); > (compiled) 0:0 0 public: void SetVt(Double_t x); > (compiled) 0:0 0 public: void Print(ostream* os); > (compiled) 0:0 0 public: void Fill(heppart_t* part); > (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); > (compiled) 0:0 0 public: Version_t Class_Version(void); > (compiled) 0:0 0 public: TClass* Class(void); > (compiled) 0:0 0 public: void Dictionary(void); > (compiled) 0:0 0 public: virtual TClass* IsA(void) const; > (compiled) 0:0 0 public: virtual void ShowMembers(TMemberInspector& insp,char* parent); > (compiled) 0:0 0 public: virtual void Streamer(TBuffer& b); > (compiled) 0:0 0 public: TMCFastHepParticle TMCFastHepParticle(TMCFastHepParticle&); > (compiled) 0:0 0 public: virtual void ~TMCFastHepParticle(void); > > > ######### #3 > # > > > ObjSuf = o > SrcSuf = cxx > ExeSuf = > DllSuf = so > MCFASTLIB = $(TMCFastO) > OutPutOpt = -o > > ROOTLIBS = -L$(ROOTSYS)/lib -lNew -lBase -lCint -lClib -lCont -lFunc \ > -lGraf -lGraf3d -lHist -lHtml -lMatrix -lMeta -lMinuit -lNet \ > -lPostscript -lProof -lTree -lUnix -lZip > ROOTGLIBS = -lGpad -lGui -lGX11 -lX3d > > # SGI with GCC > CXX = g++ > CXXFLAGS = -fsigned-char -fPIC -I$(ROOTSYS)/include > LD = g++ > LDFLAGS = -g -Wl,-u,__builtin_new -Wl,-u,__builtin_delete -Wl,-u,__nw__FUiPv > SOFLAGS = -shared > LIBS = $(ROOTLIBS) -lg++ -lm -ldl > GLIBS = $(ROOTLIBS) $(ROOTGLIBS) -lXpm -lX11 -lg++ -lm -lPW -ldl > > > # SGI > CXX = CC > CXXFLAGS = -I$(ROOTSYS)/include > LD = CC > LDFLAGS = -g > SOFLAGS = -shared > LIBS = $(ROOTLIBS) -lm -ldl > GLIBS = $(ROOTLIBS) $(ROOTGLIBS) -lXpm -lX11 -lm -lPW -ldl > > > > > # Alpha/OSF with g++ > #CXX = g++ > ##CXXFLAGS = -O -I$(ROOTSYS)/include > #CXXFLAGS = -O -Wall -fno-rtti -fno-exceptions -fPIC -I$(ROOTSYS)/include -g > #LD = g++ > #LDFLAGS = -g > #SOFLAGS = -Wl,-expect_unresolved,* -shared > #LIBS = $(ROOTLIBS) -lg++ -lm > #GLIBS = $(ROOTLIBS) $(ROOTGLIBS) -lXpm -lX11 -lg++ -lm -lPW > > > > > #------------------------------------------------------------------------------ > > TMCFastO = TMCFastHepEvt.$(ObjSuf) TMCFastTOF.$(ObjSuf) \ > TMCFastOfflineTrack.$(ObjSuf) TMCFastHepParticle.$(ObjSuf) \ > TMCFastHepEvtDict.$(ObjSuf) TMCFastTOFDict.$(ObjSuf) \ > TMCFastOfflineTrackDict.$(ObjSuf) TMCFastHepParticleDict.$(ObjSuf) > > TMCFastS = TMCFastHepEvt.$(SrcSuf) TMCFastTOF.$(SrcSuf) \ > TMCFastOfflineTrack.$(SrcSuf) TMCFastHepParticle.$(SrcSuf)\ > TMCFastHepEvtDict.$(SrcSuf) TMCFastTOFDict.$(SrcSuf) \ > TMCFastOfflineTrackDict.$(SrcSuf) TMCFastHepParticleDict.$(SrcSuf) > > > > MAIN1O = mcfast2root.$(ObjSuf) > MAIN1S = mcfast2root.$(SrcSuf) > > MAIN2O = dumpRdt.$(ObjSuf) > MAIN2S = dumpRdt.$(SrcSuf) > > > > TMCFast = mcfast2root$(ExeSuf) > TMCFast2 = dumpRdt$(ExeSuf) > TMCFastSO = libTMCFast.$(DllSuf) > > > OBJS = $(TMCFastO) $(MAIN1O) > > PROGRAMS = $(TMCFast) $(TMCFast2) > > all: $(PROGRAMS) > > $(TMCFast): $(TMCFastO) $(MAIN1O) > $(LD) $(SOFLAGS) $(LDFLAGS) $(TMCFastO) $(OutPutOpt) $(TMCFastSO) > $(LD) $(LDFLAGS) $(MAIN1O) $(MCFASTLIB) $(LIBS) $(OutPutOpt) $(TMCFast) > @echo "$(TMCFast) done" > > $(TMCFast2): $(TMCFastO) $(MAIN2O) > $(LD) $(SOFLAGS) $(LDFLAGS) $(TMCFastO) $(OutPutOpt) $(TMCFastSO) > $(LD) $(LDFLAGS) $(MAIN2O) $(MCFASTLIB) $(LIBS) $(OutPutOpt) $(TMCFast2) > @echo "$(TMCFast2) done" > > > > > > clean: > @rm -f $(OBJS) *Dict.* core > > .SUFFIXES: .$(SrcSuf) > > ### > > TMCFastHepEvt.$(ObjSuf): TMCFastHepEvt.h > TMCFastTOF.$(ObjSuf): TMCFastTOF.h > TMCFastOfflineTrack.$(ObjSuf): TMCFastOfflineTrack.h > TMCFastHepParticle.$(ObjSuf): TMCFastHepParticle.h > mcfast2root.$(ObjSuf): TMCFastHepEvt.h TMCFastHepParticle.h TMCFastTOF.h TMCFastOfflineTrack.h TMCFastHepParticle.h > dumpRdt.$(ObjSuf): TMCFastHepEvt.h TMCFastHepParticle.h TMCFastTOF.h TMCFastOfflineTrack.h > > TMCFastHepEvtDict.$(SrcSuf): TMCFastHepEvt.h TMCFastHepEvtLinkDef.h > @echo "Generating dictionary TMCFastHepEvtDict..." > @$(ROOTSYS)/bin/rootcint -f TMCFastHepEvtDict.$(SrcSuf) -c TMCFastHepEvt.h TMCFastHepEvtLinkDef.h > > TMCFastTOFDict.$(SrcSuf): TMCFastTOF.h TMCFastTOFLinkDef.h > @echo "Generating dictionary TMCFastTOFDict..." > @$(ROOTSYS)/bin/rootcint -f TMCFastTOFDict.$(SrcSuf) -c TMCFastTOF.h TMCFastTOFLinkDef.h > > TMCFastOfflineTrackDict.$(SrcSuf): TMCFastOfflineTrack.h TMCFastOfflineTrackLinkDef.h > @echo "Generating dictionary TMCFastOfflineTrackDict..." > @$(ROOTSYS)/bin/rootcint -f TMCFastOfflineTrackDict.$(SrcSuf) -c TMCFastOfflineTrack.h TMCFastOfflineTrackLinkDef.h > > TMCFastHepParticleDict.$(SrcSuf): TMCFastHepParticle.h TMCFastHepParticleLinkDef.h > @echo "Generating dictionary TMCFastHepParticleDict..." > @$(ROOTSYS)/bin/rootcint -f TMCFastHepParticleDict.$(SrcSuf) -c TMCFastHepParticle.h TMCFastHepParticleLinkDef.h > > > .$(SrcSuf).$(ObjSuf): > $(CXX) $(CXXFLAGS) -c $< > > > ##### #4 > physgi03f 182% make dumpRdt > CC -I/home/physgi.usr4/eugenio/root/include -c TMCFastHepEvt.cxx > CC -I/home/physgi.usr4/eugenio/root/include -c TMCFastTOF.cxx > CC -I/home/physgi.usr4/eugenio/root/include -c TMCFastOfflineTrack.cxx > CC -I/home/physgi.usr4/eugenio/root/include -c TMCFastHepParticle.cxx > Generating dictionary TMCFastHepEvtDict... > Note: operator new() masked 1c > CC -I/home/physgi.usr4/eugenio/root/include -c TMCFastHepEvtDict.cxx > Generating dictionary TMCFastTOFDict... > Note: operator new() masked 1c > CC -I/home/physgi.usr4/eugenio/root/include -c TMCFastTOFDict.cxx > Generating dictionary TMCFastOfflineTrackDict... > Note: operator new() masked 1c > CC -I/home/physgi.usr4/eugenio/root/include -c TMCFastOfflineTrackDict.cxx > Generating dictionary TMCFastHepParticleDict... > Note: operator new() masked 1c > CC -I/home/physgi.usr4/eugenio/root/include -c TMCFastHepParticleDict.cxx > CC -I/home/physgi.usr4/eugenio/root/include -c dumpRdt.cxx > CC -shared -g TMCFastHepEvt.o TMCFastTOF.o TMCFastOfflineTrack.o TMCFastHepParticle.o TMCFastHepEvtDict.o TMCFastTOFDict.o TMCFastOfflineTrackDict.o TMCFastHepParticleDict.o -o libTMCFast.so > ld: > Unresolved: > TObject::Browse(TBrowser*) > TObject::ClassName(void) const > TObject::Clone(void) > TObject::Close(const char*) > TObject::Compare(TObject*) > TObject::Copy(TObject&) > TObject::Delete(const char*) > TObject::DistancetoPrimitive(int,int) > TObject::Draw(const char*) > TObject::DrawClass(void) > TObject::DrawClone(const char*) > TObject::Dump(void) > TObject::Execute(char*,char*) > TObject::Execute(TMethod*,TObjArray*) > TObject::ExecuteEvent(int,int,int) > TObject::GetDrawOption(void) const > TObject::GetUniqueID(void) const > TObject::GetName(void) const > TObject::GetIconName(void) const > TObject::GetObjectInfo(int,int) > TObject::GetTitle(void) const > TObject::Hash(void) > TObject::InheritsFrom(const char*) > TObject::InheritsFrom(const TClass*) > TObject::Inspect(void) > TObject::IsFolder(void) > TObject::IsEqual(TObject*) > TObject::Is3D(void) > TObject::ls(const char*) > TObject::Paint(const char*) > TObject::Pop(void) > TObject::Print(const char*) > TObject::Read(const char*) > TObject::RecursiveRemove(TObject*) > TObject::SavePrimitive(ofstream&,const char*) > TObject::SetDrawOption(const char*) > TObject::SetUniqueID(unsigned int) > TObject::Sizeof3D(void) const > TObject::UseCurrentStyle(void) > TObject::Write(const char*,int,int) > AddClass(const char*,short,void (*)(void)) > RemoveClass(const char*) > TStorage::ObjectAlloc(unsigned int) > TObject::TObject(void) > TClonesArray::TClonesArray(char*,int,unsigned char) > TObject::~TObject(void) > TObject::operator delete(void*) > TStorage::ObjectAlloc(unsigned int,void*) > CreateClass(const char*,short,const char*,const char*,int,int) > TObject::SetBit(unsigned int,unsigned char) > sqrt > G__add_macro > G__add_compiledheader > G__getaryconstruct > G__get_linked_tagnum > G__int > G__setnull > G__getstructoffset > G__letint > TObject::TObject(const TObject&) > G__getgvp > G__setsizep2memfunc > G__getnumbaseclass > G__inheritance_setup > G__search_typename2 > G__setnewtype > G__tag_memvar_setup > G__defined_typename > G__memvar_setup > G__tag_memvar_reset > G__tag_memfunc_setup > G__memfunc_setup > G__tag_memfunc_reset > G__resetplocal > G__resetglobalenv > G__lastifuncposition > G__resetifuncposition > G__tagtable_setup > G__check_setup_version > G__getsizep2memfunc > TBuffer::ReadObject(const TClass*) > G__add_setup_func > G__remove_setup_func > TObject::ShowMembers(TMemberInspector&,char*) > TBuffer::ReadVersion(void) > TObject::Streamer(TBuffer&) > TBuffer::WriteVersion(const TClass*) > TBuffer::Expand(int) > G__letdouble > G__double > TBuffer::ReadStaticArray(int*) > TBuffer::ReadStaticArray(double*) > TBuffer::WriteArray(const int*,int) > TBuffer::WriteArray(const double*,int) > CC -g dumpRdt.o TMCFastHepEvt.o TMCFastTOF.o TMCFastOfflineTrack.o TMCFastHepParticle.o TMCFastHepEvtDict.o TMCFastTOFDict.o TMCFastOfflineTrackDict.o TMCFastHepParticleDict.o -L/home/physgi.usr4/eugenio/root/lib -lNew -lBase -lCint -lClib -lCont -lFunc -lGraf -lGraf3d -lHist -lHtml -lMatrix -lMeta -lMinuit -lNet -lPostscript -lProof -lTree -lUnix -lZip -lm -ldl -o dumpRdt > ld: > The shared object /usr/lib/libdl.so did not resolve any symbols. > You may want to remove it from your link line. > dumpRdt done > > > physgi03f 184% dumpRdt -n2 -iEvent.rdt -L > Dumping 2events > Opening file Event.rdt for input > Warning in <TClass::TClass>: no dictionary for class TMCFastHepParticle is availbble > Warning in <TClass::TClass>: no dictionary for class TMCFastHepEvt is availbble > Warning in <TClass::TClass>: no dictionary for class TMCFastTOF is availbble > Warning in <TClass::TClass>: no dictionary for class TMCFastOfflineTrack is availbble > List the Branches in the Tree > hepevt > trace > offtrk > > > -- > Paul M. Eugenio > Dept. of Physics > Carnegie Mellon University > (412) 268 6949 > eugenio@ernest.phys.cmu.edu > > > _____________________________________________________ > / The scholar should know; one builds science with \ > o O 0 / the facts just like a house can be built of stones; \ > o | but an accumulation of facts is not a science just like | > `\|||/ \ that a pile of stones is not a house. / > (o o) \_____________________________________________________/ > ooO_(_)_Ooo___________________________________________Henri Poincare'_ > _____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|____ > __|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_ > _____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|____
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:34:40 MET