我在 Visual Studio 2005 中构建了一个混合模式 DLL。在依赖项walker 中,我的 DLL 显示了以下 CRT Dlls 的依赖项。请注意,这是在我的 Windows 7 开发机器上。
c:\windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_d08a205e442db5b5\MSVCP80.DLL
"\MSVCR80.DLL
"\MSVCM80.DLL
8.0.50727.4927
在我使用 Visual Studio 2005 的 Windows 7 开发机器上,它编译并运行得很好。问题是它不会在我安装了最新 CRT 的 Windows XP 测试机器上运行。
当我将 DLL 拖到 XP 机器上的 depenency walker 中时,它似乎正在搜索 \System32 中的 DLL...(我去显示完整路径并且没有它们的路径,只有一个黄色感叹号)
问题是WinSxS中这个版本(build 4927)的crt没有安装在XP测试机上。它具有安装了最新 CRT (sp1?) 的 Visual Studio 2005。
8.0.50727.4053是我可以在 MSDN 上找到的最新版本。
我意识到这不是 SO 上发布的最令人兴奋的问题,但是有人知道这个 4927 运行时是怎么回事吗?
* 编辑 *
MT.exe 生成的清单:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.4053" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.762" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
因此,它针对的是 3 个不同的版本...