Msvcp90.dll depends on the incorrect msvcr90.dll file?

I have a dll project built with VS2008 (amd64). The dll manifest says

<assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='amd64' publicKeyToken='1fc8b3b9a1e18e3b' />

When I load the dll in DependencyWalker, it refers to the winsxs-directory

amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_08e61857a83bc251

How can this happen? Doesn’t this all mean to avoid such situations, providing each dll / exe with information, with which version it is built, and, therefore, the CRT version depends on?

And the second, even more confusing thing is that msvcp90.dll depends on msvcr90.dll , but msvcr90.dll cannot be found!?! Hey, he is in the same winsxs directory along with msvcm90.dll and msvcp90.dll! If I copy the correct msvcr90.dll file in the same directory as my dll, it works! (But then again, isn’t it that we had the situation in DllHell again? And it shouldn’t be that msvc * .dll copying should be finished, since we have manifests ???)

I would be very grateful if anyone had an explanation for me!

+5
source share
1 answer

, Microsft " ", "dll hell": (

, , (9.0.30729), MSVCR9 CRT, SP1. , VS2008 , "" .

+1

All Articles