Re: [ROOT] overloaded function exp when using complex.h

From: Rene Brun (Rene.Brun@cern.ch)
Date: Thu Jan 08 2004 - 14:28:26 MET


Hi Nicolas,

If you install ROOT from source on Linux, do
  ./configure    (possibly with options)
  make
  make cintdlls  (and you will get the stdfunc.dll built)


Rene Brun

Nicolas Arnaud wrote:
> 
> 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