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