Re: [ROOT] root and WinNT

From: Valeri Fine (fine@bnl.gov)
Date: Sun Jun 25 2000 - 13:25:55 MEST


Hello, Francois,

I've picked your makefile's and have some questions regarding the problems
you mentioned.

>  If you follow that recipe, I can guarantee that it works. However, there
>are things that I have never succeeded to do under WinNT

>  (1) - I have never succeeded in debugging a .dll file. I do not know how
>to indicate to Visual C++ that I want to debug a .dll file.

>  (2) - I do not know how to produce a .dll file in "release" mode. If you
>use my file "makefile3.mak" to produce a .dll file, you will notice that it
>produces a .dll file in debug mode.

 From your makefile3.mak I concluded it was compiled with the high
optimization
 due your:

CXXFLAGS      = $(cvarsdll) /O2 /G5 /MD

and with "debugger information produced and uploaded into the
separate file *.pdb - Program DataBase File due

CXXDEBUG      = /Zi -Fd$*.pdb

In fact this means you did produce very "release" DLL but with the
symbolic information that the Studio debugger can use.

>I have not found how to change the
>makefile in such a way that it produces a .dll file in release mode.

You are forced to apply the same compilation option ROOT team uses to
compile
the ROOT DLL's to be consistent. To produce what MS calls "DEBUG" version
one needs the "DEBUG" version of the entire ROOT system.
Those are not provided yet.

What you do with your makefile are neither "DEBUG" nor "RELEASE"
from the MS Developer Studio point of view.

It is not "DEBUG" since the "DEBUG" macro symbol is not defined and the high
optimization is applied. It entails no "debug" system library is linked
against of.
It is not RELEASE since the pdb file with symbolic information
for the debugger is provided.

So your DLL has everything to apply the debugger. However I would advice
to remove O2 (high optimization) from the CXXFLAG.

You should not try to debug your DLL rather the whole root.exe that your
DLL becomes the part of.
To do that
   1. start root.exe
   2. Load your DLL
   3. launch studio
   4. Select "Debug" -> Attach to process" -> root.exe
      At this point you may load the source files of your DLL
      to set break points.

The only problem you may meet is lack of the "debugger" information for the
"native" ROOT DLL's. In spite of your DLL is supplied with the "debugger
information" one may experienced problems without the entire ROOT debug
information. Those pdb files are always created during ROOT installation
but they are not included into the ROOT distribution so far.
May be there is means to supply those files separately (like MS does
for system DLLs).

  Please let me know whether it helps.
  With my regards,
                        Valery
>
>   This leads me to ask for a specific documentation on how to use ROOT on
>NT. A good start for such a documentation is the web site of Andrew Haas :
>http://glast.phys.washington.edu/~haas/home.html
>   but many things are missing in this site, for instance the use of Visual
>C++ starting from makefiles.
>
> <<makefile1.mak>>  <<makefile2.mak>>  <<makefile3.mak>>
>
>
>
>
>
>Hi Reiner,
>I am forwarding your message to Francois-Xavier Gentit who had
>recently a similar request/problem and finally solved it.
>Xavier, in case you answer this mail, could you provide
>a verbose answer such that we can post this information
>somewhere on the Root pages.
>Thanks in advance.
>
>Rene Brun
>
>On Fri, 9 Jun 2000 sciencesoft-analyst@listbox.cern.ch wrote:
>
>>
>>
>> Message :
>>
>>    I would appreciate your advice in understanding and eventually
>>    resolving the query referred to below. My personal remarks are:
>>
>>     Can you please answer?
>>    Thanks you, Nicole.
>>
>>    Best regards,  Nicole Cremel
>>    Scientific Software Analyst  / IT User Support
>>    ---------------------------------------------------------------------
>>    Query.........: http://cern.ch/consult/problem/10892
>>    User Email....: Reiner.Geyer@cern.ch
>>    User Subject..: root and WINNT
>>
>>    User Statement:
>>
>>
>>    From:    Reiner.Geyer@cern.ch
>>     To:      helpdesk@cern.ch
>>     Date:    Fri, 09 Jun 2000 12:14:07 +0200
>>     Subject: root and WINNT
>>
>>    -----------------------------------------------------
>>     Problems with linking root under WINNT.
>>     I try to compile the example programs under winnt.
>>     I call the make file with nmake (but I also tried it with the
>Developer
>>     Studio). In both cases i get a similar error message during linking:
>>
>>
>>
>>     >>>>>>>>>>>>>>>
>>     C:\Home\cern\reinerg\root\test>nmake
>>
>>     Microsoft (R) Program Maintenance Utility   Version 1.62.7022
>>     Copyright (C) Microsoft Corp 1988-1997. All rights reserved.
>>
>>             link /NODEFAULTLIB /INCREMENTAL:NO  /RELEASE /NOLOGO
>>     -entry:_DllMainCRTS
>>     tartup@12 -dll Hello.obj HelloDict.obj
>>     C:\home\cern\reinerg\root/lib/*.lib msvcr
>>     t.lib oldnames.lib kernel32.lib  ws2_32.lib mswsock.lib advapi32.lib
>>     user32.lib
>>     gdi32.lib comdlg32.lib winspool.lib MSVCIRT.LIB /out:Hello.dll
>>     C:\home\cern\reinerg\root/lib/Root_Cint.lib : fatal error LNK1106:
>>     invalid file
>>     or disk full: cannot seek to 0x39301e6c
>>     NMAKE : fatal error U1077: 'link' : return code '0xc'
>>     Stop.
>>
>>     Can you help?
>>     Than you very much!
>>
>>     Reiner Geyer
>>     Tel. 74546
>
>



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:28 MET