I think this is rather a feature. gSystem->Reset() rewinds system back to
the original state. So, unless you do gSystem->Load() again, you an not refer
to the symbols of the shared library.
Let me explain why this is a feature. Suppose you have another library which
has same symbol name but different meaning. In order to switch those 2 libs
without stopping the process, you need to unload every definition in the
shared library.
Masaharu Goto
----------------------------------------------------------------
i am having a little bit of a problem with the following. it seems
that the values in an enum get reset after a gROOT->Reset() when the
shared lib got brought in with gSystem->Load(), but everything is fine
when the shared lib is linked together with the rootlibs into a
standalone executable. let me clarify:
i am compiling some classes into a shared lib, somewhere in the
header files i define an enum:
---TPhOrcl.h---
...
enum EDbStorageSize{
kOraBatchSize = 10,
kOraDateSize = 12,
kOraTimeSize = 10
...
};
class TPhOrcl : public TObject {
...
};
...
in the LinkDef.h file i include it in:
---LinkDef.h----
...
#pragma link C++ class TPhOrcl;
#pragma link C++ enum EDbStorageSize;
...
everything compiles fine into a shared lib called libOrcl.so. i start
up root and do the following:
root [0] gSystem->Load("../lib/libOrcl.so");
root [1] .g kOraBatchSize
0x140731660 const EDbStorageSize kOraBatchSize=10
root [2] .g kCanDelete // defined in an enum in TObject.h
0x1406161c0 const EObjBits kCanDelete=1
root [3] .class TPhOrcl
... // many lines
root [4] gROOT->Reset()
root [5] .g kCanDelete
0x1406161c0 const EObjBits kCanDelete=1
root [6] .g kOraBatchSize
Variable kOraBatchSize not found
root [7] .class TPhOrcl
... // many lines
root [8]
once again, all is ok when i link libOrcl.so together with the
rootlibs into a standalone program. why are shared libs brought in
dynamically treated differently?
running 2.00/13 on OSF1 w/ cxx.