Pythia, ATLFast and Rootcint for Windows NT

From: mvl@nikhef.nl
Date: Mon Mar 15 1999 - 10:27:34 MET


Hello everybody,

It has already taken me some days to get the class TPythia to work on my
PC. At first I thought that it would be my inexperience, but now I decided
to that it couldn't be only that. So I decided to bring this up in
roottalk. It's become a rather elaborate story, involving root, rootCINT,
ATLFast and a Windows-specific 'problematic feature' (the space in
"C:\Program Files"). Most of it is solved, but I do not know enough of
libvraries, dlls, linkage and other stuff to solve the last one. So let's
have a go at it (I am working on a Pentium PC, Windows NT 4.0, VC++ 5.0).


First, I try the standard procedure: 
At the root prompt, I type:
gSystem.Load("C:/Program Files/root/bin/Root_EGPythia.dll")
The following error results:
"The procedure entrypoint ?AppendPad@TObject@@QAEXPAD@Z could not be
located in the dynamic link library Root_Base.dll"

To get a fine example of the used of Pyhtia in a to-be-compiled program, I
downloaded the ATLFast-example (from the root pages). Trying to compile the
ATLFast-package at first prsented a lot of trouble. This is due to the
installation of root in C:\Program Files. The space in the directory name
is confusing when command line arguments to the compiler or linker are
given. I have altered the make-files to prevent this problem, by inserting
quotes at the appropiate places. So if anyone is interested in the
windows-makefiles for ATLFast, please let me know.

With the new makefile, tried: nmake -f makefile.win

At compilation, the following warning is produced.
ATLFast.cxx (187) Warning Cxxxx 'gATLFast' inconsistent dll lnkage. DLL
export assumed

By changing the EXTERN in line 187 (ATLFast.h) to "extern", this is solved.

----Intermezzo----
This change automatically invokes rootcint at the next make-session. This
produces some errors during the excution of rootcint and later on during
compilation, therefore, I switched of the generation of dictionaries in the
makefile, since versions of ATLFastCint.cxx and ATLFastgCint.cxx are
included in the package.
The errors are all produced by stdio.h and are all called "limitations".
Also one error is generated by a preprocessor-statement. It says: # error
ERROR: only Mac and Win32 target supported.
The advice is given to use +p or -P or wahtever, but I can't find a way to
insert this switch without generating an error (I also tried it directly
from the command line). I am not sure whether this is all fatal or nor,
because this type of warnings is also generated when using rootcint on the
example program Hello.h.
-------------------

During linkage of libATLFast.dll another warning is generated. The warning
has something to do with the global or local definition of gATLFast. This
can be solved by including libATLFast.lib in the linking.

However, the next error is generated by Linkage of libATLFastg.dll and I
have found no way of solving it. The error is:
libatlfastg.exp: error LNK2001: unresolved external symbol "class ATLFast *
gATLFast" (?gATLFast@@3PAVATLFast@@A)

I also tried including libatlfats.lib and libatlfastg.lib in the linkage,
but it didn't work out. So what do I do wrong?

Thanks for your attention, I hope some of this is helpfull for you, and
that someone can help me.

Greetings,

Marco van Leeuwen



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:30 MET