http://qs321.pair.com?node_id=355683


in reply to Re: Building Perl with the free MSVC tools
in thread Building Perl with the free MSVC tools

At http://www.devside.net we have been building Perl 5.8.x for some time now with VS.NET 2002 (that links against msvcr70.lib and uses the msvcr70.dll that comes with .NET 1.0/1.0a)

We have a guide for building Perl under win32 with VC++...
(it is a very simple task)

http://www.devside.net/web/server/windows/perl
http://www.devside.net/web/server/windows

I’m not exactly sure what the problem here is, but to clarify a point...

MSVCRT.dll is the Microsoft C Runtime Library.
If you use MS VC++, your programs will only link and run with specific versions of this file; managed code or not.
(the version of MSVCRxx used by the compiler cannot be changed or specified by the user)

VS98 links only against msvcrt.lib (or maybe even an earlier version)
VS.NET 2002 links only against msvcr70.lib
VS.NET 2003 links only against msvcr71.lib

I would assume that the free MS VC++ 2003 toolkit would only link against MSVCR71.lib

msvcr70.dll is part of .NET 1.0(a)
msvcr71.dll is part of .NET 1.1

Please excuse me if I missed a point, it just seemed to me that there was a difficulty with building Perl under win32 with VC++ above 6.0 in this thread. If someone could clarify, I would be grateful.
  • Comment on Re: Building Perl with the free MSVC tools

Replies are listed 'Best First'.
Re: Re: Building Perl with the free MSVC tools
by bmann (Priest) on May 23, 2004 at 08:21 UTC
    Please excuse me if I missed a point, it just seemed to me that there was a difficulty with building Perl under win32 with VC++ above 6.0 in this thread. If someone could clarify, I would be grateful.
    The point you missed is that none of this was done with any version of Visual Studio, which would make it much simpler.

    MS is offering an undocumented and incomplete toolkit for free. No crt library is included - for that you need to download the .NET SDK. In order to build perl with this freely available compiler there are a couple of other requirements that still need to be met after getting msvcrt.lib. My post details a working method - there may be better solutions.

    Interesting point about msvcrt70(1).dll. Only problem is, just msvcrt.lib (not 70 or 71) is included with the .Net download. Perl's Makefile specifies msvcrt.dll, does that mean it is targeted to VC 6?

      Perl's Makefile specifies msvcrt.dll, does that mean it is targeted to VC 6?

      Checking via Dependency Walker, perl.exe that I built with VS.NET 2002 is using MSVCR70.DLL

      If Perl links against MSVCRT.LIB...

      Searching under my Microsoft Visual Studio .NET directory structure...
      ...the only msvcr(t)xx.lib I can find is "MSVCRT.LIB"; which is under "Microsoft Visual Studio .NET\Vc7\lib"

      I would suppose there are no msvcr70/71.lib files, only the msvcrt.lib file and the dlls.

      Also, the .NET 1.1 SDK on my system does not contain any msvcrt.lib files, just the msvcr71.dll.

      My mistake on the post I made. msvcr70/71.lib is msvcrt.lib, each one specific to the version of VC++ used.
      (is this correct or am I confused?)
        MSDN Runtime Libs

        This seems to confirm that there is only one msvcrt.lib and no msvcr70/71.lib counterparts.
        Also, the .NET 1.1 SDK on my system does not contain any msvcrt.lib files, just the msvcr71.dll.

        I spoke too soon, again.
        The .NET 1.1 SDK created directory...
        C:\Program Files\Microsoft Visual Studio .NET 2003\
        ...and it contains all the proper Run-Time libs.
        (I had everything else installed under drive E:)