Linker generated Manifest version differs from Redist versions

G

Guest

I am finding that the linker for a C++ application in VS 2005 is generating a
manifest with old version #s for DLLs such as mfc80.dll.

How do I make sure that the linker generates a manifest that reflects the
correct versions numbers of the DLLs?
My application appears not to run on the target XP because of this mismatch.

Thanks!
 
J

Jochen Kalmbach [MVP]

Hi HarryH!
I am finding that the linker for a C++ application in VS 2005 is generating a
manifest with old version #s for DLLs such as mfc80.dll.

How do I make sure that the linker generates a manifest that reflects the
correct versions numbers of the DLLs?

Have you took a look into the "SxS\Policy" folder!?
There is a policy for every file which redirects the older version to
the newer dll ;-)

My application appears not to run on the target XP because of this mismatch.

No. This is not the case. It will run, if you either
- have installed the vc_redist.exe in the SxS folder
- put the DLLs with the accoring manifest from the redist directory in
the same dir as the app

--
Greetings
Jochen

My blog about Win32 and .NET
http://blog.kalmbachnet.de/
 
G

Guest

Thanks Jochen.

Some further questions then please.

My development XP machine defintely has the policy upgrade as you suggest -
but then why does the manifest get created with an older version#?

Also the target XP has also policy upgrade - but it does not reach the
correct version number of my redistributable DLLs?

I will look at your following suggestion:
"It will run, if you either
- have installed the vc_redist.exe in the SxS folder
- put the DLLs with the accoring manifest from the redist directory in
the same dir as the app"

Thanks!
 
J

Jochen Kalmbach [MVP]

Hi HarryH!
My development XP machine defintely has the policy upgrade as you suggest -
but then why does the manifest get created with an older version#?

It seems that the CRT sources/h-files are checked in earlier than the
CRT build was done (which is quite normal).
(in the h-file the manifest is added to your linker settings via #pragma...)
Also the target XP has also policy upgrade - but it does not reach the
correct version number of my redistributable DLLs?

Why not!?
The CRT has the version "8.0.50727.42"
And the redirect will be from "8.0.41204.256-8.0.50608.0" to this new
version...

Also if you use the local manifest for app-local assemblies, then the
manifest contains the correct version "8.0.50608.0". The version of the
DLL is then not checked...
I will look at your following suggestion:
"It will run, if you either
- have installed the vc_redist.exe in the SxS folder
- put the DLLs with the accoring manifest from the redist directory in
the same dir as the app"

See also:
http://www.codeproject.com/cpp/vcredists_x86.asp


--
Greetings
Jochen

My blog about Win32 and .NET
http://blog.kalmbachnet.de/
 
G

Guest

Hi Jochen-

You have provided me great information here!

My problem was indeed an issue with the vcredist_x86 as you noted.
My previous constructions were correct but were missing this important piece
on the target platform. Now on to get installshield to execute vcredist_x86.

Thanks very much!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top