Hi, When using C++, it is essential to link the library and executable using 'g++' rather than 'ld'. The linking of C++ object files involves more that just assembling the needed files into one library. It also (at least) needs to setup the initialization of global variables, etc. (this happens to be essential to a ROOT/CINT dictionary). Hence the solution is to do g++ -o libTTest.so -shared TTest.o TTestDict.o Cheers, Philipp -----Original Message----- From: owner-roottalk@pcroot.cern.ch [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Eugen Wintersberger Sent: Friday, December 27, 2002 12:04 PM To: roottalk@pcroot.cern.ch Subject: [ROOT] compiling own libraries Hello Routers To become familiar with the process of integrating external libraries into ROOT I wrote some useless code for testing purposes (TTest.h, TTest.C and TTest_LinkDef.h in the attachment). I generated the dictionary files with : rootcint -f TTestDict.C -c TTest.h TTest_LinkDef.h and compiled and linked everything with g++ -fPIC -I/include -o TTestDict.o TTestDict.C -c g++ -fPIC -I/include -o TTest.o TTest.C -c ld -soname,libTTest.so -o libTTest.so -shared TTest.o TTestDict.o After that LibTTest.so can be loaded by ROOT with gSystem->Load("libTTest.so") The problem is that a .class TTest causes the following error message root [1] .class TTest Error: class,struct,union or type TTest not defined FILE: LINE:0 *** Interpreter error recovered *** which I don't understand. ROOT version is: 3.04/02 and my compiler is gcc 2.95.4 on a Debian Linux 3.0r1. I hope that anyone of you can help me. eugen
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:24 MET