Hello The recommended way to manage the global variables is to access them via some sort of the static global method. otherwise under Visual C++ the global variable must be attributed as "EXTERNAL DLL" In this case VC compiler will create the access function on your behalf. To provide that you should use R__EXTERN ROOT CPP macro instead of just "extern" C++ declaration. Just grep ROOT header files for R__EXTERN include/TROOT.h:R__EXTERN TROOT *gROOT; Your message was delivered without attachment therefore I could not check your header files. Hope this helps. Valeri ----- Original Message ----- From: "GENTIT Francois-Xavier DAPNIA" <GENTIT@dapnia.cea.fr> To: "'roottalk@root.cern.ch'" <roottalk@pcroot.cern.ch> Sent: Thursday, April 11, 2002 9:45 AM Subject: [ROOT] Global variables and .dll or .so > Dear rooters, > I have a problem when using global pointers instantiated within CINT and > then used in the compiled part of my code, when I create a .dll or .so. The > problem nevers appear when I compile my code with a main program and create > a .exe. Sometimes, not always, the pointer defined by a "new" inside the > CINT macro appears inside the compiled code to be equal to 0. > > The pointer is correctly declared in the Linkdef.h file with: > > #pragma link C++ global gM; > > Is it a rule that when doing a .dll or .so, it is forbidden to use global > pointers whose memory is allocated within CINT? > > I join to this mail a very small program to illustrate my point. This > small program contains 2 (almost empty) classes TMuster and TSecond, plus a > global pointer gM on TMuster. > The following CINT macro > { > gSystem.Load("libMuster.dll"); > TSecond *s; > gM = new TMuster(5); > s = new TSecond(); > } > > does the following : the global pointer gM is used inside the constructor > of TSecond. On Windows, everything works ok, on Linux gM is equal to 0 > inside the constructor of TSecond. I have also cases where the problem > appears on Windows, unfortunatly, I was not able to condense the problem > appearing on Windows into a small program. > > I am using ROOT 3.02/07, Windows NT or Linux. > > Thanks a lot if you can help me. > > F.X. Gentit > DAPNIA/SPP CEN Saclay > tel : 01 69 08 30 38 fax : 01 69 08 64 28 > web : http://home.cern.ch/~gentit/ > > <<Problem.ZIP>> > >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:49 MET