Thanks you for your detailed answer, now I feel much better about my bug :-) I will try your suggestion of calling G__cpp_setupXXX explicitly If I understood correctly, I only need to do this on Windows, right? Thanks again, Christoph On Mon 2001-07-09, Masaharu Goto wrote: > Hello Christoph, > > Thank you very much for your message. > > First, I'd like you to send Cint related requests to > rootdev@pcroot.cern.ch. I am not subscribing roottalk > right now. Fons forwarded me your message. > > Your question is about dictionary initialization. > > 4 different dictionary initialization schemes are implemented > in Cint and ROOT. Each scheme is good for specific use-case > and environment. Normally, the best method is choosen by makecint > or rootcint, hence, users do not need to care. In your case, > however, you try to tailor the solution and ending up mixing > incompatible dictionary initialization scheme. This is not > your fault. It is due to a very complex scheme I implemented. > Let me explain what is happening in your case. > > For Windows + makecint -o option, makecint creates a G__main.cxx > source which has a dictionary initialization class. Please find > G__main.cxx and see what is in there. There is a class and a > static object is defined. When you start the process, this object > is initialized by a constructor. In this constructor, dictionary > initialization routine is registered into Cint. This initialization > occurs only at the first G__init_cint call. Then, later when you > call G__init_cint again, dictionary is reset and never > re-initialized. > > Here are some ideas to solve this problem. It is clear that above > scheme does not work for you. I recommend you to call > G__cpp_setupXXX explicitly in your application after each > G__init_cint call. > > I hope this works for you. > > Thank you > Masaharu Goto > > > >Date: Sun, 8 Jul 2001 18:30:13 +0300 > >From: Christoph Bugel <chris@tti-telecom.com> > >To: roottalk@pcroot.cern.ch > >Subject: [ROOT] Re: CINT init_cint after scratch_all? > >User-Agent: Mutt/1.2.5i > > > >Actually, this isn't caused by scratch_all: I can now reproduce it like this > as well: > > > >works: > >====== > >G__init_cint(""); > >G__exec_text("Data d1;"); // works. (my "Data" class is recognized) > > > >doesn't work: > >============= > >G__init_cint(""); > >G__init_cint(""); > >G__exec_text("Data d1;"); // error. class Data not known > > > >doesn't work: > >============= > >G__init_cint(""); > >G__scratch_all(); > >G__init_cint(""); > >G__exec_text("Data d1;"); // error. class Data not known > > > >Any ideas? > >Thanks > > > > > > > >On Sun 2001-07-08, Christoph Bugel wrote: > >> (note: I use cint interpreter code, but not root) > >> > >> When I call G__scratch_all, cint seems to forget about my own classes. What > > I > >> do is this: I have my own class "Data" defined in file Data.h and Data.cxx. > > I > >> compile and link this class into my own compiled application, *and* I link > >> libcint into my application, *and* I also link a generated file G__cpp_data > . > cxx > >> into my application. This last file is generated by a cint commandline wher > e I > >> tell it about Data.h, (I think this is called a dictionary) > >> > >> My compiled code, in general, does this: > >> > >> G__init_cint(""); > >> G__exec_text("Data d1;"); // works fine, cint *already* knows my class > >> G__scratch_all(); > >> G__init_cint(""); > >> G__exec_text("Data d1;"); // fails: class Data is not known > >> G__scratch_all(); > >> > >> Seems to me like cint forgot about my class "Data", when I called > scratch_all. > >> This occured on windows, but on Linux it worked fine, so it makes me wonder > >> whether it is correct behaviour at all for scratch_all to forget my classes > . > >> Maybe it is because my makefile on windows is different. Maybe I did > something > >> wrong -- I don't exactly understand what main/G__setup.c and main/G__main.c > > are > >> for, but I used both. > >> > >> Any info is appreciated :) > >> > > > >----- End forwarded message ----- > > > >-- > >Org: CERN, European Laboratory for Particle Physics. > >Mail: 1211 Geneve 23, Switzerland > >E-Mail: Fons.Rademakers@cern.ch Phone: +41 22 7679248 > >WWW: http://root.cern.ch/~rdm/ Fax: +41 22 7677910
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:51 MET