Hi,
When loading complex.h, the function exp gets multiply defined. To solve this problem, I
searched in the roottalk archive and I found a thread related to this topic; the last
e-mail it contents was written by Masaharu Goto the 16 July 2001. For sake of
completness, I just quote it below.
------------------------
(...)
You need to load stdfunc.dll to avoid this problem. stdfunc.dll
is created in lib/stdstrct directory. Without this library ,
double exp(double) is out of function overloading matching. If
complex.h is loaded, complex exp(const complex&) is always used
and it causes infinite recursion. Loading stdfunc.dll,
double exp(double) is properly handled and you can avoid the
problem.
For making stdfunc.dll, there are 2 methods.
1) Using pure cint package
Download pure cint source package, install it using an
appropriate platform dependency file. At the end all essential
DLLs will be created. You will find $CINTSYSDIR/include/stdfunc.dll.
Copy this file to $ROOTSYS/cint/include/stdfunc.dll.
2) In root package, one of make option enebles you to build all
essential DLLs. Please refer to ROOT documentation.
(There was a problem in this course, but it was fixed during the
ROOT2001 workshop.)
(...)
-----------------------
That looks fine but I don't succeed in using method 2) which seems to me more convenient
for a ROOT user: the ROOT compilation (version 3.10/2) I did on linux didn't create me
any .dll file -- in particular, in $ROOTSYS/cint/lib/stdstrct I don't have the file
stdfunc.dll mentionned above. In addition, I couldn't find the description of the proper
ROOT make option in the directory $ROOTSYS/README.
Thanks for your help!
Nicolas
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:05 MET