4.01.04 loading user-defined libs on Windows


I’m using the binaries for 4.01.04 compiled with VC++ 7.1 Win32GDK on Windows XP.

I have 2 user-defined libraries that define the structure of one of our ROOT files, I’ll call them library A and library B. Library B depends on Library A (it is not a circular dependency).

I compile the libraries and start up CINT, in the past I’ve loaded library A and then library B via calls like: gSystem->Load(“A.dll”). Library A loads just fine, if I then go to load library B, 1 is returned …which I suppose could mean the library was already loaded… though it clearly is not.
If instead, I load library B first everything is just fine.

I saw this same behavior in 4.00.08 compiled with VC++ 7.0 Win32GDK.

Clearly, I have a workaround, but the situation troubles me. Any thoughts?



Unfortunately, you do not say anything about the way you create your DLLs. In case you use global variables and try to access a global
from another DLL, you must careful with the way you export symbols.

I suggest you have a look at the way we build DLLs in ROOT.
see $ROOTSYS/bin/bindexplib
and $ROOSYS/build/win/ld.sh
you need the source distribution.