How does the Microsoft C++ redistributable package work?
I have a binary which is built in visual studio 2008. It uses the RunTime Library as "Multi-threaded DLL (/MD)". The version in the manifest is Microsoft.VC90.CRT" version="9.0.21022.8"
. I have chosen the option to embed the manifest to the binary.
When this binary is deployed in the target machine, it gives a runtime error stating that
The procedure entry point could not be located in the dynamic link library MSVCP90.dll
I understand that the version of msvcp90.dll which the machine contains by default, doesn't have a function that my binary is referring to.
Now I install the vc++ redistributable (vcredist_x86_9.0.30729.17) and run the binary again.
This time it works fine and I see that the loaded msvcp90.dll
is of version 9.0.30729 instead of 9.0.21022.8.
How does this happen? How does my exe choose the latest version of msvcp90.dll even though the embedded manifest has the version as 9.0.21022.8?