Hi,
I've attached a tar file of a trivial project that illustrates a problem
I'm having with recent versions of ROOT. I have a couple of classes,
related by inheritance, with a template involved. The dictionaries
generated by rootcint multiply define a global initializer for the base
class. This didn't happen with earlier versions of ROOT (3.02/x).
Using 3.03/07 I get the following messages when attempting to build the
attached project:
rootcint -f ADict.C -c A.h ALinkDef.h
Class A<int>: Streamer() not declared
rootcint -f BDict.C -c B.h BLinkDef.h
Class B<int>: Streamer() not declared
Class A<int>: Streamer() not declared
g++ -c ADict.C -I. `root-config --cflags`
g++ -c BDict.C -I. `root-config --cflags`
g++ -shared -o libAB.so ADict.o BDict.o `root-config --libs`
BDict.o: In function `ROOT::GenerateInitInstance(A<int> const *)':
BDict.o(.text+0xd8): multiple definition of
`ROOT::GenerateInitInstance(A<int> const *)'
ADict.o(.text+0x0): first defined here
BDict.o: In function `ROOT::AlEintgR_IsA(void const *)':
BDict.o(.text+0x17c): multiple definition of `ROOT::AlEintgR_IsA(void
const *)'
ADict.o(.text+0xa4): first defined here
BDict.o: In function `ROOT::AlEintgR_Dictionary(void)':
BDict.o(.text+0x15c): multiple definition of
`ROOT::AlEintgR_Dictionary(void)'
ADict.o(.text+0x84): first defined here
collect2: ld returned 1 exit status
make: *** [all] Error 1
I see the following in the development notes:
2002-06-13 18:24 brun
* utils/src/rootcint.cxx:
New version of rootcint from Philippe fixing several problems
and side-effects of the recent changes by Victor.
Philippe still working on a problem reported by Mathieu de Naurois
when using namespaces and templates.
which sounds like it might be related to the problem I'm seeing.
Assuming this is the case, has there been progress toward any solution?
There doesn't seem to be any way to tell rootcint not to generate the
base class initializer. Is this the case?
Dave
PS: To try the example, save the attachment and do: uudecode -o -
g.tar.gz.uu | tar zx ; cd g ; make
--
David Morrison Brookhaven National Laboratory phone: 631-344-5840
Physics Department, Bldg 510 C fax: 631-344-3253
Upton, NY 11973-5000
begin 664 g.tar.gz
M'XL(`,5>8CT``^V736_:0!"&?>W^BFFXM(Z,UU]8@C02)I=(;4_<R6*OG4V,
MC;"I5$7I;\\L$#[R17LPI,H\%PO/.WA7ZW<\D]E&XW#N\S`,\,IYV/%WKBL,
M'@8>]X/0]3MX']4=`X+FEV88\ZH6,P`C$;_D6[I]\?^4S.ZWKQM^!G<X[SPY
M]^WS=USW\?R#T'>UW@WQ_'G#ZUKPP<^_EI-I+FH)9_7OJ2S$1,+PG,6YJ"KH
MLSLVG8]S%7<90/_+5[A3\`UX[QY_LNFLK&5<RT0'AR:H'KOO,<:.O2/B7T#_
M?U?%[85,FRL#^_R_J/E+_W="ST&]$_@.^?\0M%2:R!1&H\'ES^%HQ%AK.A/9
M1$".;P64:0HBSR'+R['(J][+T46UD*]%TWD1UZHL,+XK&)R>PJK0G*FB/K<^
M:X4L$I6";:Z7!*9--:4Q,ON'N)6IRAM\N??YWW><M?^Q`FC_^XY/_C\$Z-`N
M^S0KRSI&#X*50O]"Q75[`%8,V!K"YO.P*XLVL@AET98L0V/K[$?%91NN=*H5
MET6J,K"L.,U%5EVMI='?2JMK,9,)6"66D'$_:E?EZC'EZC_*I_FHPVSL:*0H
M]$XG>O'F'S!1:NI\4^>9'[7$9'9T_/X_\#?]OQ=HO<>I_S\(+57$^3R1<()F
M/V'LK7D@ZL)R',`/-M[<'@XB/1S<K(:#9Z/!S7(T./9>B>>@_]]7_^]ZR_[?
C(_\?@G?1_T?4_Q,$01`$01`$01`$01!$$SP`/-%`?P`H````
`
end
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:05 MET