小编mig*_*mig的帖子

msvcp90.dll依赖于错误的msvcr90.dll文件?

我有一个用VS2008(amd64)构建的DLL项目.dll的清单说

<assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='amd64' publicKeyToken='1fc8b3b9a1e18e3b' />
Run Code Online (Sandbox Code Playgroud)

当我将dll加载到DependencyWalker时,它引用winsxs-directory

amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_08e61857a83bc251
Run Code Online (Sandbox Code Playgroud)

怎么会发生这种情况?是不是这整个事情 - 通过给每个dll/exe提供它所构建的版本的信息以及它所依赖的CRT版本来避免这种情况?

第二个,更令人困惑的是,msvcp90.dll依赖于msvcr90.dll,但无法找到msvcr90.dll!?!嘿,它与msvcm90.dll和msvcp90.dll一起位于相同的winsxs目录中!如果我将正确的msvcr90.dll复制到与我的dll相同的目录中,它就可以了!(但是,再一次,这不是我们在DllHell时代的情况吗?并且不应该msvc*.dll复制应该结束,因为我们有清单???)

如果有人对我有解释,我将非常感激!

win64 manifest visual-studio-2008-sp1 msvcr90.dll

5
推荐指数
1
解决办法
1532
查看次数