Version problem MSVCR80.dll

Hello,

I just downloaded VS C++ Express Edition, and tried to build a console application using command-line. When I start the app it does not find MSVCR80.DLL. I digged into the problem, and found out that my installation of VS is version 8.0.50727.42, but the header file crtassem.h says it is version 8.0.50608.0. The latter version number is entered into the manifest file when it is generated, and I actually don't have this version of the DLL.

I cannot explain that. After VS I only installed the Platform SDK, and don't believe the file was overwritten.

What is going on

Gerd


Answer this question

Version problem MSVCR80.dll

  • Coder0xff

    It is on the same computer. The manifest is external:

    < xml version='1.0' encoding='UTF-8' standalone='yes' >
    <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
      <dependency>
        <dependentAssembly>
          <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
        </dependentAssembly>
      </dependency>
    </assembly>

    Actually, after embedding the manifest with mt, the program can be started :-) Why is the external manifest ignored

    Gerd

  • JonesEJ20

    I've just discovered this issue and read a number of forum comments on what is happening. Ultimately I want to deploy a native C++ application on a machine that does not have Visual Studio 2005 installed or .NET 2.0.

    So the compiler generates an .exe with a manifest requiring version="8.0.50608.0" CRT dlls.

    On my development machine, that's OK because the policy redirects binding from this version to the newer version of the libraries "8.0.50727.42" installed in C:\Windows\WinSxS\Policies...

    I don't have version "8.0.50608.0" of msvcm80.dll, msvcp80.dll or msvcr80.dll anywhere on my PC, so can't distribute them with the application I want to deploy. This means that the contents of c:\Windows\WinSxS must be present.

    On a machine without c:\Windows\WinSxS installed, how do you deploy a standalone app Native C++, not managed

    Or are we all tied in to needing Visual Studio or .NET2.0 installed even though this is not managed code

    Thanks


  • Brannon Jones

    I'm very confused about the CRT versions.

    I have a RTM version of VC8, which automatically created an embedded manifest for my app. The manifest has a dependency on version 8.0.50608.0 of the CRT.

    I planned to distribute the CRT and its manifest together with my app in the same target folder. Basically, I got them from \Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\

    The confusion is, those dlls' version is 8.0.50727.42 but not 8.0.50608.0. We cannot count on the redirect magic of the manifest policy, as some of the target machines are clean system without any WinSxS.

    I'm very curious about how the v8.0.50608.0 CRT points to v8.0.50727.42 CRT without the manifest policy, because nowhere mentioned the policy has to be deployed. Why v8.0.50608.0 in manifest but v8.0.50727.42 in dlls Make no sense to me.

    Could someone from Microsoft explain a little bit about this

    Thanks,
    zoom


  • Samlazyeye

    you must also be sure that the policy and binding redirection is set up in:

    C:\WINDOWS\WinSxS\Policies\x86_policy.8.0.Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_x-ww_77c24773

    in a file named:

    8.0.50727.42.policy

    and there should be a line in there like this:

    <bindingRedirect oldVersion="8.0.41204.256-8.0.50608.0" newVersion="8.0.50727.42"/>


  • DaveIHS01

    You have done too much digging. :-) Version@ is not the problem. Do you run this app on the same computer where VS is installed or on another computer Is manifest embedded or external Have you followed steps described on this page - http://msdn2.microsoft.com/en-us/library/ms235342(en-US,VS.80).aspx 


    Nikola
    VC++

  • methylamine

    You either have to deploy such CRT binaries with your application on the target machine or you can link staticaly to the CRT by using the /MT compiler switch.

    If you are building all native applications, the .net framework does not have to be on the machine running the application.

    Hope this helps!

    Thanks,
      Ayman Shoukry
      VC++ Team

  • jbanks27

  • kasra007

    Yes, I can confirm both. I am running Windows XP Pro, SP 2.

    Gerd

  • L. Lysaght

    Hi Gerd,

    Not sure what is going on. Can you confirm the following

    1. The stand alone manifest is named <Appname>.exe.manifest
    2. It is in the same directory as the EXE

    What OS are you running the APP on

    Thanks,
    Sridhar Madhugiri
    Software Development Engineer
    Visual C++


  • Huxwell

    Is your application an executable or a dll For dlls the manifests have to be embeded.

    Thanks,
      Ayman Shoukry
      VC++ Team

  • Version problem MSVCR80.dll