Re: [ROOT] rootcint on windows

From: Nick van Eijndhoven (Nick@phys.uu.nl)
Date: Wed Jul 03 2002 - 14:27:25 MEST


Hi Mike,
I am always using just the plain command mode MSVC++ functions to create
my libs. This ensures that it always works on ALL windows versions and even
DOS systems.
Attached you find the 3 files

mklibs.txt ==> Script to create private DLLs to be loaded with root
               Note that the actual name should be mklibs.bat, but in
               order to prevent certain mail systems to refuse .bat files
               in view of possible viruses I have renamed it to .txt
RALICEHeaders.h ==> File containing the headers of all the private classes
RALICELinkDef.h ==> The required linkdefs for rootcint.

If you want you can try this to create your own dll's.

                                                       Cheers,
                                                        Nick.

-- 
Dr. Nick van Eijndhoven mailto:nick@phys.uu.nl http://www.phys.uu.nl/~nick
--------------------------------------------------------------------------
Org.:    Utrecht University/Nikhef, Department of Subatomic Physics
Address: Princetonplein 5, NL-3584 CC Utrecht, The Netherlands
Phone:   +31-30-2532331(direct) +31-30-2531492(secr.)  Fax: +31-30-2518689
NIKHEF:  +31-20-5922178(direct) +31-20-5922000(secr.)  Fax: +31-20-5925155
CERN:    +41-22-7679751(direct) +41-22-7675857(secr.)  Fax: +41-22-7679480
Offices: Buys Ballot lab. 710 (Utrecht)   N241 (Nikhef)   B23 1-020 (CERN)
--------------------------------------------------------------------------
 

Mike Miller wrote:
> 
> Hi all, I have been using root under MS Visual Studio 6.0.  To this point
> I have only used standard root classes and user defined classes.  But, now
> I would like to make it so that my user defined classes can be stored in a
> TTree, so I imagine that I need to run rootcint to generate a dll for a
> "cint"'ized version of my class (i.e., automatically generated
> streamers/dictionary).  I have no idea how to do this, and I wondered if
> anyone had an example?  Thanks, Mike
> 
> Michael L. Miller (Yale Physics) michael.miller@yale.edu
> 
> Seattle:        206.543.2908    EPE group, 2nd floor physics.
> BNL:            631.344.8342    Building 118 Yale Software
> Yale:           203.432.6615    Room 301 WNSL

@echo off
rem ****************************************************************************
rem *   Script to create an MSVC++ LIB and relocatable DLL from *.cxx files
rem *
rem * Usage :
rem * -------
rem * mklibs export : ROOT loadable DLL and export LIB are created
rem * mklibs full   : ROOT loadable DLL and full LIB version are created
rem * 
rem * Notes :
rem * -------
rem * 1) "mklibs export" is the default, enabling ROOT loadable library creation
rem *    via 'double clicking'.
rem *
rem * 2) Providing unsupported options results in displaying the help info.  
rem *
rem * This script creates ralice.lib and ralice.dll from all .h and .cxx files
rem * in the current directory.
rem *
rem * In view of the ROOTCINT processing, the following two standard files
rem * are always required :
rem *
rem * RALICEHeaders.h : containing an include of all .h files
rem * RALICELinkDef.h : containing the #pragma's to define all classes
rem *
rem * --- NvE 04-apr-2000 UU-SAP Utrecht
rem ****************************************************************************

echo .
echo === Automatic ROOT library production of files ralice.lib and ralice.dll ===
echo .

rem --- The option strings for MSVC++ DLL compilation and linking ---
set mscomp=/nologo /c /TP /Za /MD /I%ROOTSYS%\include
set msdll=/nologo /TP /Za /MD /LD /GD /I%ROOTSYS%\include
set mslink=/ENTRY:_DllMainCRTStartup@12 %ROOTSYS%\lib\*.lib

if "%1" == "" goto export
if "%1" == "export" goto export
if "%1" == "full" goto full

rem --- Displaying of the help info ---
echo ****************************************************************************
echo *   Script to create an MSVC++ LIB and relocatable DLL from *.cxx files
echo *
echo * Usage :
echo * -------
echo * mklibs export : ROOT loadable DLL and export LIB are created
echo * mklibs full   : ROOT loadable DLL and full LIB version are created
echo * 
echo * Notes :
echo * -------
echo * 1) "mklibs export" is the default, enabling ROOT loadable library creation
echo *    via 'double clicking'.
echo * 2) Providing unsupported options results in displaying the help info.  
echo *
echo * This script creates ralice.lib and ralice.dll from all .h and .cxx files
echo * in the current directory.
echo *
echo * In view of the ROOTCINT processing, the following two standard files
echo * are always required :
echo *
echo * RALICEHeaders.h : containing an include of all .h files
echo * RALICELinkDef.h : containing the #pragma's to define all classes
echo ****************************************************************************
goto end

:export
echo *** Creation of ROOT loadable export libraries
echo.
rem --- Set the RALICE source directory as working directory
cd ..
rem --- Creation of ROOT dictionary ---
rootcint zzzralicedict.cxx -c RALICEHeaders.h RALICELinkDef.h
rem --- Compilation step ---
cl %mscomp% *.cxx
rem --- Creation of the export LIB ---
bindexplib ralice *.obj > ralice.def
lib /nologo /machine:IX86 *.obj /def:ralice.def /out:ralice.lib
rem --- Creation of the DLL ---
link /nologo /machine:IX86 /DLL *.obj ralice.exp %mslink% /OUT:ralice.dll
rem --- Move the created libs to the SCRIPTS subdirectory
move ralice.lib .\scripts
move ralice.dll .\scripts
rem --- Delete all intermediate files --- 
del .def
del ralice.def
del ralice.exp
del zzzralicedict.h
del zzzralicedict.cxx
del *.obj
echo.
echo *** mklibs done.
goto end

:full
echo *** Creation of ROOT loadable full version libraries
echo.
rem --- Set the RALICE source directory as working directory
cd ..
rem --- Creation of ROOT dictionary ---
rootcint zzzralicedict.cxx -c RALICEHeaders.h RALICELinkDef.h
rem --- Creation of the DLL ---
cl %msdll% *.cxx /link %mslink% /OUT:ralice.dll
rem --- Creation of the full version LIB ---
lib /nologo /machine:IX86 *.obj /out:ralice.lib
rem --- Move the created libs to the SCRIPTS subdirectory
move ralice.lib .\scripts
move ralice.dll .\scripts
rem --- Delete all intermediate files --- 
del .def
del zzzralicedict.h
del zzzralicedict.cxx
del *.obj
echo.
echo *** mklibs done.
goto end

:end
rem --- End of script ---






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