Hi Paolo, in cases like this where the nesting of #ifdef's is too deep for rootcint (only one level), try excluding problematic headers using #ifdef __CINT__ statements. For example, assume standards.h gives problems, but it defines a few essential types: ... ... #ifdef __CINT__ typedef unsigned int u_int; #else #include <standard.h> #endif ... ... In other cases one needs to use the -p (preprocess option). Often this causes to much information to be provided to rootcint which causes it to choke up. In some case a selective preprocessing might be better. This can be done by the following pragma's in the LinkDef.h file: #pragma preprocess X11/ #pragma preprocess ZIP.h The first pragma says to preprocess all headers in dir X11, e.g. #include <X11/Xlib.h> and the second says to only preprocess header ZIP.h. Cheers, Fons. Paolo Calafiura wrote: > > Hi, > > here is my problem, > > origin:17:37:~/rootevent: rootcint -f EventCint.h -c -t Event.h > LinkDef.h > Option -c must come directly after the output file > origin:17:55:~/rootevent: rootcint -f EventCint.cxx -c -t Event.h > LinkDef.h > -t : trace execution > LOADING file=TROOT.h:/usr/local/root/include/TROOT.h: > LOADING file=TDirectory.h:/usr/local/root/include/TDirectory.h: > LOADING file=TNamed.h:/usr/local/root/include/TNamed.h: > LOADING file=TObject.h:/usr/local/root/include/TObject.h: > LOADING file=Rtypes.h:/usr/local/root/include/Rtypes.h: > LOADING file=RConfig.h:/usr/local/root/include/RConfig.h: > LOADING file=stdio.h:/usr/local/root/cint/include/stdio.h: > LOADING file=DllImport.h:/usr/local/root/include/DllImport.h: > LOADING file=Varargs.h:/usr/local/root/include/Varargs.h: > LOADING file=stdarg.h:/usr/local/root/cint/include/stdarg.h: > LOADING file=TStorage.h:/usr/local/root/include/TStorage.h: > LOADING file=TBuffer.h:/usr/local/root/include/TBuffer.h: > LOADING file=string.h:/usr/local/root/cint/include/string.h: > LOADING file=Bytes.h:/usr/local/root/include/Bytes.h: > Warning: File "string.h" already loaded > LOADING file=TList.h:/usr/local/root/include/TList.h: > LOADING file=TSeqCollection.h:/usr/local/root/include/TSeqCollection.h: > LOADING file=TCollection.h:/usr/local/root/include/TCollection.h: > LOADING file=TIterator.h:/usr/local/root/include/TIterator.h: > LOADING file=TString.h:/usr/local/root/include/TString.h: > Warning: File "string.h" already loaded > LOADING file=TMath.h:/usr/local/root/include/TMath.h: > LOADING file=TRefCnt.h:/usr/local/root/include/TRefCnt.h: > LOADING file=TDatime.h:/usr/local/root/include/TDatime.h: > LOADING file=Htypes.h:/usr/local/root/include/Htypes.h: > LOADING > file=TMemberInspector.h:/usr/local/root/include/TMemberInspector.h: > LOADING file=TObject.h:/usr/local/root/include/TObject.h: > LOADING file=Event.h:Event.h: > LOADING file=compact.h:compact.h: > LOADING file=rpc/rpc.h:/usr/include/rpc/rpc.h: > Warning: File "stdio.h" already loaded > LOADING file=rpc/types.h:/usr/include/rpc/types.h: > LOADING file=sys/types.h:/usr/include/sys/types.h: > LOADING file=standards.h:/usr/include/standards.h: > Error: G__getvariable: expression FILE:/usr/include/standards.h > LINE:128 > Error: class,struct,union or type > defined(_XOPEN_SOURCE)||\((defined(_SGI_SOURCE)&&_NO_POSIX) not defined > FILE:/usr/include/standards.h LINE:128 > 16695:rootcint: rld: Fatal Error: attempted access to unresolvable > symbol in rootcint: Init__12G__ClassInfo > origin:17:55:~/rootevent: > LOADING file=TString.h:/usr/local/root/include/TString.h: > Warning: File "string.h" already loaded > LOADING file=TMath.h:/usr/local/root/include/TMath.h: > LOADING file=TRefCnt.h:/usr/local/root/include/TRefCnt.h: > LOADING file=TDatime.h:/usr/local/root/include/TDatime.h: > LOADING file=Htypes.h:/usr/local/root/include/Htypes.h: > LOADING > file=TMemberInspector.h:/usr/local/root/include/TMemberInspector.h: > LOADING file=TObject.h:/usr/local/root/include/TObject.h: > LOADING file=Event.h:Event.h: > LOADING file=compact.h:compact.h: > LOADING file=rpc/rpc.h:/usr/include/rpc/rpc.h: > Warning: File "stdio.h" already loaded > LOADING file=rpc/types.h:/usr/include/rpc/types.h: > LOADING file=sys/types.h:/usr/include/sys/types.h: > LOADING file=standards.h:/usr/include/standards.h: > Error: G__getvariable: expression FILE:/usr/include/standards.h > LINE:128 > Error: class,struct,union or type > defined(_XOPEN_SOURCE)||\((defined(_SGI_SOURCE)&&_NO_POSIX) not defined > FILE:/usr/include/standards.h LINE:128 > 16695:rootcint: rld: Fatal Error: attempted access to unresolvable > symbol in rootcint: Init__12G__ClassInfo > origin:17:55:~/rootevent: > > the system is an SGI Origin 2000 > origin:17:56:~/rootevent: uname -a > IRIX64 origin 6.4 02121744 IP27 > > and I am using version 1.03/09 (I tried both versions available from > root.cern.ch for SGI, the 5.3 and the 6.4 compiled with gcc) > > The file Event.h includes compact.h which is a STDC header file, > generated by rpcgen, that contains the structures I want to read into > Event class. I tried to simplify the problem removing the include of > rpc.h from compact.h > origin:18:10:~/rootevent: rootcint -f EventCint.cxx -c -t Event.h > LinkDef.h > ..... > LOADING file=TObject.h:/usr/local/root/include/TObject.h: > LOADING file=Event.h:Event.h: > LOADING file=compact.h:compact.h: > Error: No symbol u_intNhit in current scope FILE:compact.h LINE:212 > > looking at the relevant part of compact.h > > struct TAGchannel { > int n; > u_int Nhit; <<<<<<<<<<<<<<line 212 > struct TAGhit hit[MAX_TAG_HITS] ; > }; > one really gets the impression that cint is somewhat confused. > > Cheers > Paolo Calafiura -- Org: CERN, European Laboratory for Particle Physics. Mail: 1211 Geneve 23, Switzerland Phone: +41 22 7679248 E-Mail: Fons.Rademakers@cern.ch Fax: +41 22 7677910
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:34:30 MET