我有一个可执行文件,清单上说它取决于
Microsoft.VC90.CRT 9.0.21022.8
Microsoft.VC90.CRT 9.0.30729.1在Windows 7上,此可执行文件运行时没有任何问题。在Windows Server2008 R2上,此可执行文件无法运行,并显示以下消息:
应用程序无法启动,因为其并行配置不正确。有关详细信息,请参阅应用程序事件日志或使用命令行sxstrace.exe工具。
这是意想不到的--我认为Windows7和Windows Server2008 R2在运行时可用性方面应该非常相似。两台机器都很干净。Windows7机器是全新安装的,上面什么都没有。Windows Server2008 R2计算机只有一些来自Windows Update的更新。
我检查了Windows7机器的WinSxS目录,发现
Microsoft VC90.CRT 9.0.30729.4926我检查了Windows Server2008 R2机器的WinSxS目录,发现
Microsoft VC90.CRT 9.0.30729.4926存在的运行时比清单中指定的运行时新,但Windows Server2008 R2系统无法重定向到较新的运行时。在Windows Server2008 R2上运行sxstrace显示:
INFO: Applying Binding Policy
INFO: No publisher policy found.
INFO: No binding policy redirect found.在Windows 7上运行sxstrace可以提供:
INFO: Applying Binding Policy
INFO: Find publisher policy at C:\Windows\WinSxS\manifest\amd64...
INFO: Publisher Policy redirected assembly version.
INFO: Post policy assembly identity is...除了安装VS2008运行时和VS2008 SP1运行时之外,你有什么想法可以解决这个问题吗?我认为程序集的整个想法是,它允许系统覆盖较旧的运行时并替换较新的运行时。
发布于 2011-05-23 03:51:48
尽管原则上WinSxS允许兼容的较新版本的程序集替换旧版本,但VS运行时不使用此功能,并且仅绑定到编译时所针对的相同版本。根据相同版本的库重新编译应用程序的所有组件(可能是最好的,以避免多个malloc堆出现问题),或者同时安装两个运行时。
发布于 2014-04-22 05:44:37
您可以将VC++运行时dlls放在应用程序的可执行文件目录中,它应该可以工作。您将需要两个dll (MSVCR和MSVCP)和清单。不经意间,只要把这3个文件都放到应用程序的可执行目录中就可以了
https://stackoverflow.com/questions/6074963
复制相似问题