Hello everybody, I am a newcomer in Root system. I am running the 2.25 version on a unix Alpha OSF1 using cxx. I tried to implement in Root a personal Class THEvsN dervied from TH2F. // // Declaration des spectres E*/N vs N // #include "Rtypes.h" #include "TH2.h" class THEvsN:public TH2F { public: int np,nc; float Edisp; THEvsN(void); THEvsN(TH2F *spec); ~THEvsN(void); virtual void Draw(Option_t *option); ClassDef(THEvsN,1) }; ============================================================================= // // Implementation des spectres E*/N vs N // #include <iostream.h> #include <stdio.h> #include <math.h> #include "TGraph.h" #include "THEvsN.h" ClassImp(THEvsN) THEvsN::THEvsN(void):TH2F() { np=0; nc=0; Edisp=0.; } THEvsN::THEvsN(TH2F *spec):TH2F(*spec) { char titre[80]; sprintf(titre,"%s (THEvsN)\0",spec->GetName()); SetName(titre); cout << "L'histogramme "<< this->GetName() << " de type THEvsN a ete cree." << endl; } THEvsN::~THEvsN(void) { } void THEvsN::Draw(Option_t *option) { TGraph *graph=new TGraph(); int i; int nbe=100; float epl[100]; float am[100]; float em[100]; float esa[100]; float eplb[100]; float rm[100]; float qm[100]; FILE *fstatic=fopen("/home/grpun/cussol/n_corps/statique/statique_1_100.data","r"); printf("fstatic=%d\n",fstatic); for (i=0;i<nbe;i++) { fscanf(fstatic,"%f %f %f %f %f %f\n",&am[i],&rm[i],&esa[i],&eplb[i],&rm[i],&qm[i]); } fclose(fstatic); cout << nbe << " valeurs dans les tableaux..." << endl; TH2F::Draw(option); for (i=0;i<nbe;i++) epl[i]=-esa[i]; graph->SetLineColor(4); graph->DrawGraph(nbe,am,epl,"l"); for (i=0;i<nbe;i++) epl[i]=-eplb[i]; graph->SetLineColor(6); graph->DrawGraph(nbe,am,epl,"l"); } I have read the .html pages related to that subject. So I use the following Makefile: #--------------------------------------------------- CXXFLAGS = -g -z -I${ROOTSYS}/include LDFLAGS = -g -z -shared -L${ROOTSYS}/lib/ -rpath ${ROOTSYS}/lib/ LD = ld COMPIL = cxx LIBS = ${ROOTSYS}/lib/*.so -lXpm -lX11 -lm -lcxx -lc HDRS = THEvsN.h SRCS = main_root.C THEvsN.C mydict.C OBJS = main_root.o THEvsN.o mydict.o PROGRAM = monroot all: ${PROGRAM} ${PROGRAM}: ${OBJS} @echo "Linking ${PROGRAM} ..." @${LD} ${LDFLAGS} ${OBJS} ${LIBS} -o ${PROGRAM} @chmod +x ${PROGRAM} @echo "done" clean:; @rm -f ${OBJS} core ### THEvsN.o: THEvsN.h THEvsN.C @echo "Compilation de THEvsN.C" @$(COMPIL) -c ${CXXFLAGS} THEvsN.C main_root.o: THEvsN.h main_root.C @echo "Compilation de main_root.C" @$(COMPIL) -c ${CXXFLAGS} main_root.C mydict.o: mydict.C @echo "Compilation de mydict.C" @$(COMPIL) -c ${CXXFLAGS} mydict.C mydict.C: THEvsN.h @echo "Generating dictionary ..." @rootcint mydict.C -c THEvsN.h #--------------------------------------------------- The compilation and the linking are OK. But when I run my executable file "monroot", the following error occurs: 346626:monroot: /sbin/loader: Error: Unresolved symbol in /usr/shlib//libc.so: _end 346626:monroot: /sbin/loader: Fatal Error: this executable has unresolvable symbols I suspect an error in load flags definitions or in the copiler flag definitions, but I can not find it. Did somebody had this problem? Could somebody help me? Thanks in advance Friendly Daniel CUSSOL LPC Caen Boulevard du Marechal Juin 14050 CAEN CEDEX e-mail : cussol@in2p3.fr Tel : +33-(0)2-31-45-29-73 FAX : +33-(0)2-31-45-25-49
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:35 MET