RE: [ROOT] Re: Cint and MSVC7

From: Faine, Valeri (fine@bnl.gov)
Date: Wed Dec 04 2002 - 16:29:36 MET


Hi Masa,
There were three separate problems with VC7. Two of them have been
solved.
See my message:
http://root.cern.ch/root/roottalk/roottalk02/5128.html 

The first one was due the ROOT treated VC7 as non-ansi compliant
compiler
That is not true with VC7.

The second one was due a new type of the constant the VC7 generates.
These constants were treated by the bindexplib utility as the exported
symbols.
The later in turn caused the fake unresolved symbols messages.

The only problem left is due a confirmed bug in VC7 compiler.
(see: http://support.microsoft.com/default.aspx?scid=kb;en-us;320004 )

In other words unless Microsoft provides a fix we may not have any
reason to switch to VC7. (or apply the "second" workaround.
See http://support.microsoft.com/default.aspx?scid=kb;en-us;320004
again) 

                My best regards, Valeri


> -----Original Message-----
> From: Masaharu Goto [mailto:MXJ02154@nifty.ne.jp]
> Sent: Wednesday, December 04, 2002 9:41 AM
> To: Faine, Valeri; 'Axel Naumann'
> Cc: 'Marc Irsch'; cint@pcroot.cern.ch
> Subject: Re: [ROOT] Re: Cint and MSVC7
> 
> Hello Valeri,
> 
> Because I do not have VC++7.0, so I am not completely sure,
> but it looks like you have 2 different version of ofstream definition.
> I can not find ROOT/base/inc/Riosfwd.h. This one may be modified
> for your environment.   As I read your following e-mail, you may have
> solved this problem already.
> 
> Thank you
> Masa Goto
> 
> 
> ----- Original Message -----
> From: "Faine, Valeri" <fine@bnl.gov>
> To: "'Masaharu Goto'" <MXJ02154@nifty.ne.jp>; "'Axel Naumann'"
> <axel-naumann@gmx.de>
> Cc: "'Marc Irsch'" <marc@computerspacken.org>; <cint@pcroot.cern.ch>
> Sent: Wednesday, December 04, 2002 8:18 AM
> Subject: RE: [ROOT] Re: Cint and MSVC7
> 
> 
> > Hi Masa,
> >
> > I am still fighting with VC7 compiler.
> > I've gotten a bunch of the messages:
> >
> > G__Base1.cxx
> > base\src\G__Base1.cxx(10542) : error C2872: 'ofstream' : ambiguous
> > symbol
> >         could be
> > 'c:\cygwin\home\fine\work\root.3.03.08\base\inc\Riosfwd.h(47) :
> > ofstream'
> >         or
> > 'C:\Program Files\Microsoft Visual Studio
.NET\Vc7\include\iosfwd(477) :
> > std::ofstream'
> >
> > what id the right way to resolve this?
> >
> >   Thank you, 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