Re: Incompatibility of libraries

From: Axel Naumann <Axel.Naumann_at_cern.ch>
Date: Fri, 11 Mar 2011 18:09:44 +0100


Hi,

this can be caused by both libraries containing a dictionary with the same name. I.e. they might have two different dictionaries (different content), but at creation time (rootcint) they were given the same file name (e.g. G__Dict.cxx).

You should be able to find out by comparing the output of

nm libTAMUWWSpecialTools.so libTAMUWWMEPATNtuple.so |grep G__cpp_reset_tagtable

Cheers, Axel.

Ricardo Eusebi wrote on 03/11/2011 05:13 PM:
> Hi,
> I'm working with ROOT 5.22/00d (branches/v5-22-00-patches_at_29532, May 19
> 2010) on Linux 2.6.18-194.32.1.el5 2011 x86_64 x86_64 x86_64 GNU/Linux
>
> I have a conflict between libraries that I cannot solve. Specifically I
> have the following two libraries, which (are supposed to) have
> absolutely no dependence between each other:
> -SpecialTools (which contains the class PhysicsProcess)
> -MEPATNtuple (which contains the class METree)
>
>
> I can load the library containing the PhysicsProcess class and works
> just fine
> root [0]
> gSystem->Load("../../lib/slc5_ia32_gcc43/libTAMUWWSpecialTools.so")
> (int)0
> root [1] PhysicsProcess * proc
> root [2]
>
> I can restart root and load the library containing the class METree and
> works fine as well
> root [0]
> gSystem->Load("../../lib/slc5_ia32_gcc434/libTAMUWWMEPATNtuple.so")
> (int)0
> root [1] METree * me
> root [2]
>
>
> But when I load both of them I can only see the first library's classes
> (true regardless of the order in which the libraries are loaded)
>
> root [0]
> gSystem->Load("../../lib/slc5_ia32_gcc434/libTAMUWWSpecialTools.so")
> (int)0
> root [1] PhysicsProcess * proc
> root [2]
> gSystem->Load("../../lib/slc5_ia32_gcc434/libTAMUWWMEPATNtuple.so")
> (int)0
> root [3] METree * me
> Error: Symbol METree is not defined in current scope (tmpfile):1:
> Error: Symbol me is not defined in current scope (tmpfile):1:
> (const int)0
> *** Interpreter error recovered ***
> root [4] PhysicsProcess * proc
> root [5]
>
> So my question is very general, giving a conflict between libraries how
> can I start debugging where in the libraries my problem is at ? If
> there is an incompatibility between these libraries how can I pinpoint
> the source of that error ?
>
>
> Thanks,
> Ricardo
>
>
>
Received on Fri Mar 11 2011 - 18:09:53 CET

This archive was generated by hypermail 2.2.0 : Fri Mar 11 2011 - 23:50:01 CET