dva
March 22, 2007, 2:40pm
1
Hello,
I found that a macro fails to pass loading after migrating to 5.15.04 from 5.14.00.
What is the way out?
There is a short example demonstrating the problem:
[rootmacros] > root
FreeType Engine v2.1.9 used to render TrueType fonts.
Compiled on 14 December 2006 for linux with thread support.
CINT/ROOT C/C++ Interpreter version 5.16.16, November 24, 2006
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
root [0] .L test.C++
Info in TUnixSystem::ACLiC : creating shared library /home/dorofeev/private/rootmacros/./test_C.so
root [1] .q
[rootmacros] > export ROOTSYS=/work/dorofeev/root/v5.15.04/slc3_gcc3.2.3/root
[rootmacros] > export LD_LIBRARY_PATH=/home/dorofeev/private/bec/lib/dstr:/home/dorofeev/private/bec/lib:/work/dorofeev/root/v5.15.04/slc3_gcc3.2.3/root/lib::.
[rootmacros] > export PATH=/home/dorofeev/bin:/home/dorofeev/scripts:/usr/sue/bin:/usr/local/bin:/usr/local/bin/X11:/usr/bin:/bin:/usr/bin/X11:/usr/kerberos/bin:/work/dorofeev/root/v5.15.04/slc3_gcc3.2.3/root/bin:/cern/2004/bin:/usr/X11R6/bin:.
[rootmacros] > rm test_C.d test_C.so
[rootmacros] > root
Compiled on 20 March 2007 for linux with thread support.
CINT/ROOT C/C++ Interpreter version 5.16.19, March 16, 2007
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
root [0] .L test.C++
Info in TUnixSystem::ACLiC : creating shared library /home/dorofeev/private/rootmacros/./test_C.so
Error: Symbol vector<pair<double,double> >coords is not defined in current scope /home/dorofeev/private/rootmacros/test.C:18:
Error: Symbol vectorvalues is not defined in current scope /home/dorofeev/private/rootmacros/test.C:19:
Warning: Error occurred during reading source files
Warning: Error occurred during dictionary source generation
!!!Removing /home/dorofeev/private/rootmacros/./fileaIILIS.cxx /home/dorofeev/private/rootmacros/./fileaIILIS.h !!!
Error: rootcint: error loading headers…
Error in : Dictionary generation failed!
Info in : Invoking compiler to check macro’s validity
Info in : The compiler has not found any problem with your macro.
Probably your macro uses something rootcint can’t parse.
Check root.cern.ch/root/Cint.phtml?limitations for Cint’s limitations.
My OS is SLC3 and corresponding ROOT binaries were dowloaded.
Regards, Valery
test.C (849 Bytes)
kbat
March 23, 2007, 7:48am
2
Hi Valery,
I think you just need to include both vector and map or set Rint.Includes to 2 in system.rootrc. This changed behaviour is mentioned in developmen notes (see section “Changes in some files automatically included at startup”).
Cheers,
brun
March 23, 2007, 7:50am
3
Remove “#ifndef CINT ” in your macro.
This prevents the correct generation of teh dictionary for vector<…>
Rene