Re: [ROOT] How to export a global from a dll

From: Faine, Valeri (fine@bnl.gov)
Date: Tue May 21 2002 - 21:32:05 MEST


> Valeri,
> 
> I could not export a global.  Here's what happened

  Have you created the RootCint dictionary for your class and defined 
  your global variable with Linkdef.h pragma file ?
 
           #pragma link C++ global gApplication;

 replace "gApplication" with your global variable name.

  
I guess your troubutes has nothing to do with VC++ rather with RootCint dictionary
One has to create to access the class from the Root/Cint macro.

%ROOTSYS%/test/Makefile.win32
contains an example of building the dictionary for "Event" class.
However this example doesn't show the "gobal variable case"

  Valeri .


> 
> I added
> 
> R__EXTERN CAnalysis *gAnalysis
> 
> to a class header file (outside the class definition!) and
> CAnalysis *gAnalysis;
> 
> to the implementation file.  When I built using a makefile based on the
> %ROOTSYS%\test\makefile.win32 I got the warning message:
> 
> warning C4273: 'gAnalysis" : inconsistent dll linkage.  dllexport assumed.
> 
> The problem is that the variable is not global! when I try to use it from
> within a root session, I get
> 
> Error: Symbol gAnalysis is not defined in current scope
> 
> (this is after loading the DLL that contains R__EXTERN..  Here's my
> compile switches for file:
> 
> 
> 
> 
> 
>     cl  -D_MT -D_DLL -MDd -nologo -G5 -GR -MD -DWIN32 -DVISUAL_CPLUSPLUS -D_
> WINDOWS -Ic:\root/include -O2 -c CManage.cpp
> Command line warning D4025 : overriding '/MDd' with '/MD'
> CManage.cpp
> 
> 
> 
> 
> 
> 
> > Hi,
> >   How do I export a global variable from a DLL?  I am using VC++6 on Win32
> > with root v3.02/07.  Thanks.
> 
>   You should  use cpp macro: R__EXTRERN
> 
> YourClassHeaderFile.h:
>     R__EXTERN  MyClassGolbalVariable *gMyGlobal;
> 
> 
>  Look up %ROOTSYS%/include/*.h file for the concrete examples examples
>   (See attachment as well)
> 
>   Hope this helps. Valeri
> 
> >
> > Ed Oltman
> >
> >
> 
> 
> 



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:53 MET