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

Version problem MSVCR80.dll
Coder0xff
< 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
Nikola
VC++
methylamine
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
Gerd
L. Lysaght
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
Thanks,
Ayman Shoukry
VC++ Team