4.01.04 loading user-defined libs on Windows

Hi,

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?

Thanks,
Heather

Heather,

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.

Rene