mig*_*mig 5 win64 manifest visual-studio-2008-sp1 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复制应该结束,因为我们有清单???)
如果有人对我有解释,我将非常感激!
通过清单,Microsft 引入了一种新的“dll 地狱”来解决“dll 地狱”:(
顺便说一句,您引用的最后一个版本 (9.0.30729) 是升级到 SP1 的 MSVCR9 CRT。也许您可以尝试使用此版本更新 VS2008 以“同步”清单。
| 归档时间: |
|
| 查看次数: |
1532 次 |
| 最近记录: |