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