[ROOT] Compiling root under Win 2000

From: Axel Naumann (axel@fnal.gov)
Date: Tue May 15 2001 - 22:34:16 MEST


Hi,

I tried to compile root 3.00/06 under Win 2000, MSVC++ 6.0, cygwin. The
compilation ("./configure win32;gmake") works fine (i.e. no errors), but
Root doesn't work after the compilation. From what I can see the problem is
connected to loading a dll and extracting the classes' dictionary entries
defined in the dll.

When starting root it crashes in the following call stack
  TApplication::TApplication(const char*, int*, char**, void*, int)
  TRint::TRint(const char*, int*, char**, void*, int, unsigned char)
  main(int, char**)

as CInt is unable to extract the class TGWin32 from libWin32. The call stack
for loading TGWin32 looks like this:
  ...
  G__loadsystemfile(char*)
  TSystem::Load(const char*, const char*, unsigned int)
  TWinNTSystem::Load(const char*, const char*, unsigned int)
  TROOT::LoadClass("TGWin32", "Win32")
  TApplication::LoadGraphicsLibs()

Everything returns without error, but in TApplication::TApplication() the
gROOT->ProcessLineFast("new TWin32") following the LoadGraphicsLibs() fails
with
Error: No symbol TGWin32 in current scope  FILE: LINE:0
Error: type TGWin32 not defined FILE: LINE:0
*** Interpreter error recovered ***.

So I tried to replace the libWin32.dll I compiled with the one in the root
binary distribution. Now root starts up, but RootInteractive doesn't know
any classes except for TGeometry (what a strange choice...).

What I don't understand is that a TClassTable::PrintTable() right before the
ProcessLineFast("new TWin32") shows TGWin32 as known to the dictionary (and
also a TClassTable::GetDict("TWin32") returns !=NULL). Are there two
different dictionaries, one for the root TApplication and one for the
interactive part of it, and for some reason CInt's dictionary doesn't get
updated properly when loading a dll on the TApplication level?

I had a look at the dictionaries generated by rootcint during the
compilation, they look okay, and as I said, the LoadClass does update
"TApplication's" dictionary.

Best regards, Axel.

PS: How is the root binary distribution generated? With the exact same setup
of VC6 and cygwin? Why did this error never show up then?



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:45 MET