RE: [ROOT] root(cint) and template

From: Philippe Canal (pcanal@fnal.gov)
Date: Fri May 11 2001 - 19:04:17 MEST


Hi Jacek,

Your linkdef file should be correct whether you have the ClassDef
or not.  (In this context the ClassDef would mainly give you I/O
capability).  Anyway, you test should have worked.

> dlopen error:
/.automount/p2a00/root/h/holeczek/src/root/GSL/././Complex.so: undefined
> symbol: __vt_t7Complex1Zr

This indicates that the virtual table for the Complex<long double> class in
not
present.  Maybe you have forgotten a ClassImp for that instantiation (or
someother
member function has not be implemented.).

Philippe.

-----Original Message-----
From: Jacek M. Holeczek [mailto:holeczek@us.edu.pl]
Sent: Friday, May 11, 2001 11:56 AM
To: Philippe Canal
Cc: roottalk@pcroot.cern.ch
Subject: RE: [ROOT] root(cint) and template


Hi,
Something got shorted in my mind ... and I can't recall how to make my
nice "template <class _FLT> class Complex" visible in ROOT (from a shared
library). I don't want to inherit from TObject, nor to use ClassDefT(2) as
they both add private data members.
So, how should the LinkDef look like ?
Thanks in advance,
Jacek.
P.S. Anyhow, I tried to inherit from TObject and use ClassDefT(2) and I got
:
----------------------------------------------------------------------------
-
[GSL]$ g++ -g -O2 -fPIC -DD -DALL -DROOT -I$ROOTSYS/include -c Cinst.cxx -o
DComplex.o
[GSL]$ g++ -g -O2 -fPIC -DF -DALL -DROOT -I$ROOTSYS/include -c Cinst.cxx -o
FComplex.o
[GSL]$ g++ -g -O2 -fPIC -DLD -DALL -DROOT -I$ROOTSYS/include -c Cinst.cxx -o
LDComplex.o
[GSL]$ rootcint -f G__Complex.cxx -DROOT Complex ComplexLinkDef.h
[GSL]$ g++ -g -O2 -fPIC -DROOT -I$ROOTSYS/include -c G__Complex.cxx
[GSL]$ g++ -g -O2 -fPIC -DROOT -I$ROOTSYS/include -shared -o Complex.so
FComplex.o DComplex.o G__Complex.o
[GSL]$ root
  *******************************************
  *                                         *
  *        W E L C O M E  to  R O O T       *
  *                                         *
  *   Version   3.00/06     12 March 2001   *
  *                                         *
  *  You are welcome to visit our Web site  *
  *          http://root.cern.ch            *
  *                                         *
  *******************************************

FreeType Engine v1.x used to render TrueType fonts.
Compiled with thread support.

CINT/ROOT C/C++ Interpreter version 5.14.79, Feb 24 2001
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
root [0] .L ./Complex.so
dlopen error: /.automount/p2a00/root/h/holeczek/src/root/GSL/././Complex.so:
undefined symbol: __vt_t7Complex1Zr
Load Error: Failed to load Dynamic link library
/.automount/p2a00/root/h/holeczek/src/root/GSL/././Complex.so
*** Interpreter error recovered ***
root [1] .q
----------------------------------------------------------------------------
-
The ComplexLinkDef.h was just :
----------------------------------------------------------------------------
-
#ifdef __CINT__
#pragma link off all typedefs;
#pragma link off all globals;
#pragma link off all functions;
#pragma link off all classes;

#pragma link C++ class Complex<float>;
#pragma link C++ class Complex<double>;
#if 0 // CINT error in sizeof(long double)
#pragma link C++ class Complex<long double>;
#endif

#endif
----------------------------------------------------------------------------
-



This archive was generated by hypermail 2b29 : Fri Jun 08 2001 - 11:51:24 MEST