1

我的 C++ 应用程序使用共享运行时程序集版本 9.0.30729.1 在 Windows XP 上运行。但最近我安装了新的 C++ 重新分发包,它部署了更新版本的运行时程序集版本 9.0.30729.6161。

在 Winsxs\policies 目录中,这个新的策略文件也由新的 C++ 重新分发包部署。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright (c) Microsoft Corporation.  All rights reserved. -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32-policy" name="policy.9.0.Microsoft.VC90.ATL" version="9.0.30729.6161" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.ATL" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/>
<bindingRedirect  oldVersion="9.0.20718.0-9.0.21022.8" newVersion="9.0.30729.6161"/>
<bindingRedirect  oldVersion="9.0.30201.0-9.0.30729.6161" newVersion="9.0.30729.6161"/>
</dependentAssembly>
</dependency>
</assembly>

在这个新的 Visual C++ 2008 Redistributable 安装后,我的程序显示“由于应用程序配置不正确,此应用程序无法启动”错误。但是,如果我删除上面的策略文件,它就可以正常工作。任何想法?

4

1 回答 1

0

您的应用程序清单可能包含多个版本的 CRT。如果您可以发布应用程序的清单(在资源编辑器中打开已编译的二进制文件并使用剪贴板将其复制出来),它将为我提供更多信息。

于 2013-07-30T11:47:03.510 回答