[ROOT] 2 dictionnaries ?

From: Colin Bernet (bernet@hep.saclay.cea.fr)
Date: Sun Sep 22 2002 - 18:37:18 MEST


Hi rooters ! 

Loading 2 shared libraries, each containing a dictionnary, or a single
shared library containing 2 dictionnaries seems to be impossible. In the
first case, symbols from the secodn library are not recognized by root,
while in the second case, the created objects get stuck at one point for
unknown reasons. 

What I want to do is : 
1 - Fill trees (split 99) using classes located in lib1.so
2 - Use MakeClass on one of these trees, modify the code so it compiles,
and create a shared library lib2.so out of that. 

The only way to work that out was to create a library demo.so using
TFile::MakeProject.
in ROOT, I can then do 
.L demo.so 
.L lib2.so
this works perfectly, despite the fact demo.so, to my point of view,
should not be necessary to read a tree containing basic data types.

Now, I have some code in lib1.so that I would 
like to reuse in lib2.so. I tried to load these libraries in different
orders, to link lib1.so as a module inside lib2.so, but nothing works. I'm
afraid this is because 2 dictionnaries are conflicting.

One could argue that I may use unsplit mode so I get the objects from
lib1.so as is inside the tree. I do not want to do that for 2 reasons : I
prefer to keep the data independant from the source code by using basic
types, and I like to be able to issue complex TTree::Draw commands
to have a first look at the data. 

Is there a way to solve this problem without duplicating the source files
of lib1 to compile and link them in lib2 ? 

Many thanks, 

Colin



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:10 MET