Hi Federico, I have no problems in executing your example. It is in general much faster to execute a script (interpreted or compiled) directly from Root instead of making your own executable. For example, take the file atest.C below (copied from your program). You can do; root > .x atest.C (executed via the interpreter) root > .x atest.C++ (script compiled and executed) Rene Brun //file atest.C #include "TCanvas.h" #include "TGraph.h" #include "TGraphSmooth.h" void atest() { TCanvas *MyC = new TCanvas("test","test",0); MyC->Divide(1,2); MyC->cd(1); Int_t n=20; Float_t x[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; Float_t y[20]={-2.1,-1.6,-2.2,1.4,-1.0,.1,.9,.5,1.1,1.5, .8,1.2,1.8,2.2,1.6,1.1,1.3,.7,.3,0.0}; TGraph *grq1 = new TGraph(n,x,y); grq1->Print(); grq1->Draw("ALP"); TGraph *grout=new TGraph(20); TGraphSmooth *gs1 = new TGraphSmooth("g"); grout = gs1->Approx(grq1,"linear",40); MyC->cd(2); grout->Draw("ALP"); } Federico Roncarolo wrote: > > Hello, > > please find below a simple example concerning my problem. > I never get errors in compiling with gmake (I also put the Makefile > below). > While executing sometimes it is working, often I get the message > > pure virtual method called > Abort (core dumped) > > depending if I include the lines > > TGraph *grout=new TGraph(20); > TGraphSmooth *gs1 = new TGraphSmooth("g"); > > in the source. > I don't have a real c++ backgound... maybe I miss something basilar, like > calling a destructor or something like that... > > At the moment I wrote a .C version of my complete code, I use .L file.C > and it works always... but I would like to implement it in the more > flexible way where I can compile with gmake... > > Thanks a lot, Federico > > //File: my_test.cxx: > > #include <iostream.h> > #include "TCanvas.h" > #include "TGraph.h" > #include "TGraphSmooth.h" > #include "TStyle.h" > #include "G__ci.h" > #include "TObject.h" > #include "TApplication.h" > > //___________________________________ > int main(int argc, char **argv) > { > > > TApplication theApp("App", &argc, argv); > > TCanvas *MyC = new TCanvas("test","test",0); > > > MyC->Divide(1,2); > MyC->cd(1); > Int_t n=20; > Float_t x[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; > Float_t y[20]={-2.1,-1.6,-2.2,1.4,-1.0,.1,.9,.5,1.1,1.5, > .8,1.2,1.8,2.2,1.6,1.1,1.3,.7,.3,0.0}; > > TGraph *grq1 = new TGraph(n,x,y); > > grq1->Print(); > grq1->Draw("ALP"); > > TGraph *grout=new TGraph(20); > TGraphSmooth *gs1 = new TGraphSmooth("g"); > > grout = gs1->Approx(grq1,"linear",40); > MyC->cd(2); > > grout->Draw("ALP"); > > > theApp.Run(); > gApplication->Terminate(); > } > > //Makefile: > ARCH = linuxegcs > > CXX = > ObjSuf = o > SrcSuf = cxx > ExeSuf = > DllSuf = so > OutPutOpt = -o > > EVENTLIB = $(EVENTSO) > > ROOTCFLAGS := $(shell root-config --cflags) > ROOTLIBS := $(shell root-config --libs) > ROOTGLIBS := $(shell root-config --glibs) > > ifeq ($(ARCH),linuxegcs) > # Linux with egcs (>= RedHat 5.2) > CXX = g++ > CXXFLAGS = -O -Wall -fPIC > LD = g++ > LDFLAGS = -O > SOFLAGS = -shared > endif > > #_____________________________________________________________________________ > > ifeq ($(CXX),) > $(error $(ARCH) invalid architecture) > endif > > CXXFLAGS += $(ROOTCFLAGS) > LIBS = $(ROOTLIBS) $(SYSLIBS) > GLIBS = $(ROOTGLIBS) $(SYSLIBS) > > #------------------------------------------------------------------------------ > > FIT_Q_VERO = fit_q_ver.$(ObjSuf) > FIT_Q_VERS = fit_q_ver.$(SrcSuf) > FIT_Q_VER = fit_q_ver$(ExeSuf) > > MY_TESTO = my_test.$(ObjSuf) > MY_TESTS = my_test.$(SrcSuf) > MY_TEST = my_test$(ExeSuf) > > OBJS = $(FIT_Q_VERO) $(MY_TESTO) > > PROGRAMS = $(FIT_Q_VER) $(MY_TEST) > > #------------------------------------------------------------------------------ > > .SUFFIXES: .$(SrcSuf) .$(ObjSuf) .$(DllSuf) > .PHONY: > > all: $(PROGRAMS) > > @echo "$@ done" > > $(FIT_Q_VER): $(FIT_Q_VERO) > $(LD) $(LDFLAGS) $^ $(LIBS) $(OutPutOpt)$@ > @echo "$@ done fit_q_ver" > > $(MY_TEST): $(MY_TESTO) > $(LD) $(LDFLAGS) $^ $(LIBS) $(OutPutOpt)$@ > @echo "$@ done my_test" > > clean: > @rm -f $(OBJS) core > > distclean: clean > @rm -f $(PROGRAMS) $(EVENTSO) $(EVENTLIB) *Dict.* *.def > *.exp \ > *.root *.ps *.so .def so_locations > @rm -rf cxx_repository > > .SUFFIXES: .$(SrcSuf) > > ### > > .$(SrcSuf).$(ObjSuf): > $(CXX) $(CXXFLAGS) -c $< > > //_______________________________________________________________________ > > __________________________________________________ > Federico Roncarolo federico.roncarolo@cern.ch > alchemist@infinito.it > CERN SL/BI 865 1-A27 > > Tel: > +41.(0)22.76.75611 Work > +41.(0)79.6982190 GSM > +33.(0)4.50.40.82.67 Home > __________________________________________________ > > On Wed, 20 Mar 2002, Rene Brun wrote: > > > Hi Federico, > > > > Impossible to come with a diagnostic with only these few lines. > > Could you provide a short example that we can use to understand your problem? > > > > Rene Brun > > > > Federico Roncarolo wrote: > > > > > > Hello, > > > > > > I'm trying to interpolate a graph with TGraphSmooth, > > > I'm working in linux, my makefile looks to compile properly the file .cxx > > > in which I put: > > > > > > ..... > > > ..... > > > TGraph *grq1 = new TGraph(ncycles,vtime,vmax);// properly drawn > > > > > > TGraph *grout=new TGraph(ncycles+12); > > > TGraphSmooth *gs1 = new TGraphSmooth(); > > > > > > Double_t xout[12]; > > > Int_t add; > > > Double_t dt=90e-3; > > > Double_t t0=784e-3; > > > > > > for(add=0;add<12;add++) xout[add]=t0+add*dt; > > > > > > grout = gs1->Approx(grq1,"linear",ncycles+12,xout,0,2); > > > //the program clearly > > > //stops at this line > > > ..... > > > ..... > > > > > > but while executing I get the message > > > > > > pure virtual method called > > > Abort (core dumped) > > > > > > what's wrong? > > > > > > Thanks a lot, > > > Federico > > > > > > __________________________________________________ > > > Federico Roncarolo federico.roncarolo@cern.ch > > > alchemist@infinito.it > > > CERN SL/BI 865 1-A27 > > > > > > Tel: > > > +41.(0)22.76.75611 Work > > > +41.(0)79.6982190 GSM > > > +33.(0)4.50.40.82.67 Home > > > __________________________________________________ > >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:46 MET