Undefined symbol: _ZN4TH2DC1EPKcS1_iddidd

I’ve spent some time coding up some routines which I’m putting into a shared library. These routine further depend on other shared libraries which I’ve written to handle some data IO, (not root related.) when I compile and load one particular routine, then execute it from the root command line, I get the following error…

undefined symbol: _ZN4TH2DC1EPKcS1_iddidd

If I take the same code and put it into a .C macro and execute it, I don’t get the undefined symbol error. So some how my compiled code -> share library -> loaded into root via gSystem->Load(); some how misses out on some symbol resolution for TH2D which I’m not quite understanding.

Any ideas?

Hi,

$ c++filt _ZN4TH2DC1EPKcS1_iddidd TH2D::TH2D(char const*, char const*, int, double, double, int, double, double)

which is part of linHist. If the linker or dynamic loader cannot find it, it means that libHist is not loaded. You can do that by calling gSystem->Load(“libHist”) before loading your library, or by linking your library against libHist.so.

Cheers, Axel.