RE: [ROOT] Re: Cint and MSVC7

From: Faine, Valeri (fine@bnl.gov)
Date: Wed Dec 04 2002 - 03:12:37 MET


Hello
Please, find the corrections to compile root under "Microsoft Studio
NET."

It was tested to build ROOT 3.03.09 with Qt 3.1.0 
and Windows XP look and feel (see http://root.bnl.gov )
(with no optimization though :-(

(rrrr) [192] cvs diff -u base/inc/RConfig.h
build/win/bindexplib/bindexplib.cx
x
Index: base/inc/RConfig.h
===================================================================
RCS file: /user/cvs/root/base/inc/RConfig.h,v
retrieving revision 1.46
diff -u -r1.46 RConfig.h
--- RConfig.h   2002/07/29 09:20:25     1.46
+++ RConfig.h   2002/12/04 02:07:17
@@ -1,4 +1,4 @@
-/* @(#)root/base:$Name:  $:$Id: RConfig.h,v 1.46 2002/07/29 09:20:25
rdm Exp $ */
+/* @(#)root/base:$Name: v3-03-09 $:$Id: RConfig.h,v 1.46 2002/07/29
09:20:25 rdm Exp $ */

 
/***********************************************************************
**
  * Copyright (C) 1995-2002, Rene Brun and Fons Rademakers.
*
@@ -333,6 +333,9 @@
 #   define ANSICPP
 #   define R__VECNEWDELETE    /* supports overloading of new[] and
delete[] */
 #   define R__PLACEMENTDELETE /* supports overloading placement delete
*/
+#   if _MSC_VER > 1200
+#     define R__ANSISTREAM    /* ANSI C++ Standard Library conformant
*/
+#   endif
 #endif

 #ifdef __MWERKS__
Index: build/win/bindexplib/bindexplib.cxx
===================================================================
RCS file: /user/cvs/root/build/win/bindexplib/bindexplib.cxx,v
retrieving revision 1.2
diff -u -r1.2 bindexplib.cxx
--- bindexplib.cxx      2002/04/10 18:20:29     1.2
+++ bindexplib.cxx      2002/12/04 02:07:17
@@ -382,11 +382,20 @@
 */
             if (!strstr(s,"AEPAXI@Z") && !strstr(s,"real@"))
             {
-              fprintf(fout, "\t%s", s);
               SectChar =
pSectionHeaders[pSymbolTable->SectionNumber-1].Characteristics;
-              if (!pSymbolTable->Type  && (SectChar &
IMAGE_SCN_MEM_WRITE)) // Read only (i.e. constants) must be exclude
-                                                          fprintf(fout,
" \t DATA");
-              fprintf(fout, "\n");
+              if (!pSymbolTable->Type  && (SectChar &
IMAGE_SCN_MEM_WRITE)) {
+                 // Read only (i.e. constants) must be excluded
+                 fprintf(fout, "\t%s", s);
+                 fprintf(fout, " \t DATA");
+                 fprintf(fout, "\n");
+              } else {
+                 if ( pSymbolTable->Type  || !(SectChar &
IMAGE_SCN_MEM_READ)) {
+                    fprintf(fout, "\t%s", s);
+                    fprintf(fout, "\n");
+                 } else {
+//                    printf(" strange symbol: %s \n",s);
+                 }
+              }
             }
           }
         }


 My best regards, Valeri

> -----Original Message-----
> From: owner-roottalk@pcroot.cern.ch
[mailto:owner-roottalk@pcroot.cern.ch]
> On Behalf Of Masaharu Goto
> Sent: Monday, December 02, 2002 5:22 PM
> To: Axel Naumann
> Cc: Marc Irsch; cint@pcroot.cern.ch; roottalk@pcroot.cern.ch
> Subject: [ROOT] Re: Cint and MSVC7
> 
> Hello Alex,
> 
> Thank you for trying this.  Let me look into this.   Meanwhile,
> will you send me the modified bcvstrm.cxx? I'll try to generate
> vc7strm.cxx out from it.
> 
> There is another person who is compiling Cint (pure cint) with
> VC++7.0.  Sounds like he uses vcstrm.cxx and his original
> VC++6.0 setup as is.  Just for your information.
> 
> Thank you
> Masa Goto
> 
> =======================================================
> Marc Irsch(marc@computerspacken.org) wrote:
> 
> MG> I don't think debug and release build make big difference. It is
> encouraging
> MG> that you can run Cint with VC++7.0. We have several people who
have
> MG> VC++7.0 and having problem with Cint. It will be quite helpful if
you
> MG> provide us some information.
> 
> MG>   - How you compiled Cint with VC++7.0?
> MG>         a. with platform/visual/setup.bat  script
> MG>         b. with src/libcint/libcint.mdp and cint/cint.mdp
> MG>         c. other
> 
> The answer is c. I built my own project files on VC++ 6.0 and
> imported them on VC++ 7.0 later on.
> Worked immediately, without any modification.
> 
> I didn't use the setup files with VC++ 7.0 yet.
> 
> MG>   - Which iostream dictionary file did you use?
> MG>         a. src/libstrm.cxx
> MG>         b. src/vcstrm.cxx
> MG>         c. src/cbstrm.cxx
> MG>         d. src/gcc3strm.cxx
> MG>         e. src/fakestrm.cxx
> MG>         f.  other...
> 
> b.
> 
> MG>    - I guess you compiled libcint.dll and cint.exe. How about
other
> MG> libraries
> MG>       especially precompiled STL container class libraries.
> MG>            stl/string.dll , stl/vector.dll , stl/list.dll ,
> stl/deque.dll ,
> MG> stl/map.dll , etc...
> 
> Nope, sorry. Never touched these files.
> 
> Regards,
>   Marc
> 
> 
> 
> ----- Original Message -----
> From: "Axel Naumann" <axel-naumann@gmx.de>
> To: "'Masaharu Goto'" <MXJ02154@nifty.ne.jp>
> Sent: Tuesday, December 03, 2002 3:00 AM
> Subject: Cint and MSVC7
> 
> 
> > Dear Masa,
> >
> > I finally sat down and tried to build CInt (well, Root's version of
> > CInt) with Microsoft Visual C++.NET. As you suggested during the
root
> > workshop I started out with the bcstream files. Those worked quite
well,
> > the only changes I had to make were
> > * remove wrappers to streambuf::sputn and sgetn (not supported by
MSVC's
> > streambuf)
> > * fstreambase and strstreambase (they are not base classes for
MSVC's
> > fstream and strstream, only iostream is base for strstream): Remove
> > class setup, method wrappers and inheritance setup
> > * remove wrapper to strstreambuf::doallocate (declared as protected
in
> > MSVC)
> >
> >
> > Now all I'm left with is
> >
> > libCint.exp : error LNK2001: unresolved external symbol
> > _CT??_R0?AVexception@@@8
> > ??0exception@@QAE@ABV0@@Z12
> > libCint.exp : error LNK2001: unresolved external symbol
> > _CT??_R0?AVlength_error@
> > std@@@8??0length_error@std@@QAE@ABV01@@Z40
> > libCint.exp : error LNK2001: unresolved external symbol
> > _CT??_R0?AVlogic_error@s
> > td@@@8??0logic_error@std@@QAE@ABV01@@Z40
> > libCint.exp : error LNK2001: unresolved external symbol
> > _CT??_R0?AVout_of_range@
> > std@@@8??0out_of_range@std@@QAE@ABV01@@Z40
> > libCint.exp : error LNK2001: unresolved external symbol
> > _CTA3?AVlength_error@std
> > @@
> > libCint.exp : error LNK2001: unresolved external symbol
> > _CTA3?AVout_of_range@std
> > @@
> > libCint.exp : error LNK2001: unresolved external symbol
> > _TI3?AVlength_error@std@
> > @
> > libCint.exp : error LNK2001: unresolved external symbol
> > _TI3?AVout_of_range@std@
> > @
> > bin\libCint.dll : fatal error LNK1120: 8 unresolved externals
> > make: *** [lib/libCint.dll] Error 96
> >
> > An #include <exception> doesn't solve that problem. There are two
things
> > I don't understand with that:
> > * why does the linker search for the symbol std::length_error and
not
> > length_error (without std::)?
> > * why is the exception stuff not in MSVCIRT.LIB, the multi threaded
> > dynamic link default library that supports the old iostream library
> > (instead of the new std c++ lib)
> >
> > MS states clearly that the old iostream library (e.g. <iostream.h>)
and
> > the new std c++ lib are incompatible, and only one will be used at a
> > time to search for symbols. If MSVC finds any #include<..h> (like
> > <iostream.h> or <strstream.h>) it will use the old one. Maybe
exception
> > is not part of the old library? I really don't know, all I could
find is
> > that exception _is_ part of the _new_ std c++ library, but that
still
> > doesn't tell me whether it's also in the old iostream lib. Do you
happen
> > to know that?
> >
> > Hope we can figure this one out.
> > Cheers, Axel.
> >
> >



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