RE: [ROOT] Problem loading shared library

From: Philippe Canal (pcanal@fnal.gov)
Date: Fri Oct 10 2003 - 22:26:30 MEST


Hi,

You probably forgot to implement TBigDSWriteParticle::~TBigDSWriteParticle
and/or to create, compile
and link the ROOT dictionary for TBigDSWriteParticle (see rootcint).

Cheers,
Philippe.

-----Original Message-----
From: owner-roottalk@pcroot.cern.ch [mailto:owner-roottalk@pcroot.cern.ch]On
Behalf Of 0ndrej Chvala
Sent: Friday, October 10, 2003 12:57 PM
To: roottalk@pcroot.cern.ch
Subject: [ROOT] Problem loading shared library


Dear rooters,

I have created a very basics class, which is even based on aa working
class by Michal Kreps, added it into our small root project, compiled
the library and when I want to use that library, I get the following error:

root [0] gSystem->Load("../lib/libmicro.so");
dlopen error:
/afs/cern.ch/user/o/ondrejch/public/mixing/src/./../lib/libmicro.so:
undefined symbol: __vt_19TBigDSWriteParticle
Load Error: Failed to load Dynamic link library
/afs/cern.ch/user/o/ondrejch/public/mixing/src/./../lib/libmicro.so
*** Interpreter error recovered ***

also when I want to link it with another code, I get:

g++    -o /afs/cern.ch/user/o/ondrejch/public/dst_write/bin/dst_write
dst_write.o -L/afs/cern.ch/na49/library/pro/lib -ldb -ltrk -g
-L/afs/cern.ch/na49/library/local/ROOT/root/lib -lCore -lNew -lHist
-lCint -lMatrix  -lTree -lPhysics -lRint -lMatrix -lMinuit -lEG
-lGraf-lGraf3d -lGpad   -L/afs/cern.ch/na49/library/pro/DSPACK/lib
-ldspack /usr/local/lib/libshift.a
/afs/cern.ch/user/o/ondrejch/public/mixing/lib/libmicro.so
-L/usr/lib/gcc-lib/i386-redhat-linux/2.96 -lg2c
-L/afs/cern.ch/sw/fortran/pgi/pgi324/linux86/lib/ -lpgftnrtl -lpgc
-L/usr/lib/gcc-lib/i386-redhat-linux/2.96 -lg2c  -ldl -lm -lc -lnsl -lcrypt
/afs/cern.ch/user/o/ondrejch/public/mixing/lib/libmicro.so: undefined
reference to `TBigDSWriteParticle::IsA(void) const'
/afs/cern.ch/user/o/ondrejch/public/mixing/lib/libmicro.so: undefined
reference to `TBigDSWriteParticle type_info function'
/afs/cern.ch/user/o/ondrejch/public/mixing/lib/libmicro.so: undefined
reference to `TBigDSWriteParticle virtual table'
collect2: ld returned 1 exit status
gmake[2]: ***
[/afs/cern.ch/user/o/ondrejch/public/dst_write/bin/dst_write] Error 1

We tried everything we could and we are still lost :( Thanks for any help

These is the sources of the simple class in question -->

TBigDSWriteParticle.h:
#ifndef TBigDSWriteParticle_Header


#define TBigDSWriteParticle_Header


#include "TObject.h"
#include "TObjArray.h"


class TBigDSWriteParticle : public TObject
{
  private :
    Float_t fPx;                        // Momenta in x direction in LAB
    Float_t fPy;                        // Momenta in y direction in LAB
    Float_t fPz;                        // Momenta in z direction in LAB


  public :
    TBigDSWriteParticle();
    TBigDSWriteParticle(Float_t px,Float_t py, Float_t pz);
    ~TBigDSWriteParticle();


    void SetPx(Float_t px) {fPx=px;};                   // Set px
    void SetPy(Float_t py) {fPy=py;};                   // Set py
    void SetPz(Float_t pz) {fPz=pz;};                   // Set pz
    Float_t GetPx() {return fPx;};                      // Returns px
    Float_t GetPy() {return fPy;};                      // Returns py
    Float_t GetPz() {return fPz;};                      // Returns pz

  ClassDef(TBigDSWriteParticle,1) // Event base class


};


#endif

TBigDSWriteParticle.cxx:
#include "TObject.h"
#include "TBigDSWriteParticle.h"


ClassImp(TBigDSWriteParticle)


TBigDSWriteParticle::TBigDSWriteParticle()
{
  fPx=0;
  fPy=0;

fPz=0;
}


TBigDSWriteParticle::TBigDSWriteParticle(Float_t px,Float_t py, Float_t pz)
{
  fPx=px;
  fPy=py;
  fPz=pz;
}


thanks and greetings,
0ndrej CHvala, NA49



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:16 MET