I’m having some trouble with on of my shared class libraries. It contains (among others) a class created with MakeProxy. Compiling and linking works without problems. However, when I try to load this library in the Root command line it fails with a dlopen error:
undefined symbol: _ZTIN4ROOT12TBranchProxyE
A look into the library with nm gives me
... 0008a430 V _ZTI9TestClass 00089e88 V _ZTIA153_c 0008a43c V _ZTIN4Cint12G__ClassInfoE U _ZTIN4ROOT12TBranchProxyE 0008a424 V _ZTIN4ROOT9TImpProxyIcEE 0008a40c V _ZTIN4ROOT9TImpProxyIdEE 0008a418 V _ZTIN4ROOT9TImpProxyIiEE 0008a400 V _ZTIN4ROOT9TImpProxyIjEE 00089ec0 V _ZTISt12_Vector_baseIdSaIdEE 00089ec8 V _ZTISt12_Vector_baseIiSaIiEE ...
I’m using root_v5.18.00 and gcc version 3.4.4. Compiling and linking is done with my own Makefile (no problems so far) which calls rootcint for every header file. I don’t use a LinkDef.h file. For the class in question the ClassDef counter is set to 0.
I’ve also compiled and linked with ACLIC. In this case everything works! I can use the MakeProxie’d class without problems.
Might it be a problem with the LinkDef.h file? So far I never needed to have one. But now the trees I’m looking at contain STL vectors.
Thanks for your ideas.
PS. I’ve noticed that the compilation of the class generated by MakeProxy takes a lot of time. Why is that?