[ROOT] overloaded function exp when using complex.h

From: Nicolas Arnaud (narnaud@lal.in2p3.fr)
Date: Thu Jan 08 2004 - 12:08:55 MET


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

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!


This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:05 MET