Hello ROOTers,
I am using ROOT cvs from Tuesday May 27 in Linux.
I previously reported a problem with operators in namespaces which was
fixed. Thanks Philippe! But I have uncovered the "next level" in you
will... :-)
I have a namespace FOO, With a class bug, no overloaded
operators, compiled into its own library. Fine.
I have another namespace ONU, with a class onme that
inherits from FOO::bug. There is a friend overloaded uniary
minus for bug. This is compiled into ints own library and dynamically
linked to FOO::bug's library. Fine so it seems.
Here in lies the problem. If I try to link the ONU::onme library to
another library or problem I get the following error....
g++ -O2 -Wall -fPIC -D_REENTRANT -I/opt/cern/root/include -c bug.cxx
Generating dictionary bugDict.cxx...
/opt/cern/root/bin/rootcint -f bugDict.cxx -c bug.h bugLinkDef.h
g++ -O2 -Wall -fPIC -D_REENTRANT -I/opt/cern/root/include -c bugDict.cxx
g++ -shared -Wl,-soname,libBug.so -L/opt/cern/root/lib -lNew -lCore
-lCint -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix
-lPhysics -lpthread -lm -ldl -rdynamic -L/opt/cern/root/lib -lCore -lCint
-lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix
-lPhysics -lGui -lpthread -lm -ldl -rdynamic -L/home/rainman/rfliller/ROOT
bug.o bugDict.o -o libBug.so
FOO::bug library generated......
g++ -O2 -Wall -fPIC -D_REENTRANT -I/opt/cern/root/include -c onme.cxx
Generating dictionary onmeDict.cxx...
/opt/cern/root/bin/rootcint -f onmeDict.cxx -c onme.h onmeLinkDef.h
g++ -O2 -Wall -fPIC -D_REENTRANT -I/opt/cern/root/include -c onmeDict.cxx
g++ -shared -Wl,-soname,libOnMe.so -L/opt/cern/root/lib -lNew -lCore
-lCint -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix
-lPhysics -lpthread -lm -ldl -rdynamic -L/opt/cern/root/lib -lCore -lCint
-lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix
-lPhysics -lGui -lpthread -lm -ldl -rdynamic -L/home/rainman/rfliller/ROOT
-L\. -lBug onme.o onmeDict.o -o libOnMe.so
ONU::onme library generated.....
Now link to a program....
g++ -O2 -Wall -fPIC -D_REENTRANT -I/opt/cern/root/include -c -o dummy.o
dummy.cc
g++ -L/opt/cern/root/lib -lNew -lCore -lCint -lHist -lGraf -lGraf3d -lGpad
-lTree -lRint -lPostscript -lMatrix -lPhysics -lpthread -lm -ldl -rdynamic
-L/opt/cern/root/lib -lCore -lCint -lHist -lGraf -lGraf3d -lGpad -lTree
-lRint -lPostscript -lMatrix -lPhysics -lGui -lpthread -lm -ldl -rdynamic
-L/home/rainman/rfliller/ROOT -L\. -lBug -lOnMe dummy.o -o dummy
./libOnMe.so: undefined reference to `ONU::operator-(ONU::onme &)'
collect2: ld returned 1 exit status
make: *** [dummy] Error 1
rm onmeDict.cxx bugDict.cxx
Attached is code that illustrates the problem at hand. Thank you for the
time!
(Just for the record - I didn't do this! I just have to get root to work
with it! :-)
--
RAINMAN
"How much does a piece of gum cost Ray?"
"About $100."
"How much does a new car cost Ray?"
"`Bout $100."
"There goes working for NASA!"
==================================================================
Ray Fliller: rfliller@bnl.gov Office Phone: (631)-344-6124
C-A Accelerator Physics Dept. Fax: (631)-344-5954
Building 911B
Brookhaven National Lab
Upton, NY 11973 Office: Room 211
http://www.agsrhichome.bnl.gov/People/rfliller/
==================================================================
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:12 MET