3

我有一个尴尬的情况,我有一个必须在 x64 应用程序中使用的 32 位库。为了解决这个问题,我创建了一个 COM 服务器应用程序来处理 32 位和 64 位进程之间的通信。

一切都内置在 Windows 7 上的 VS2005 版本8.0.50727.867中。我注意到的一件事是我的版本与 SP1 的 redist 版本 ( ) 不匹配8.0.50727.762。我认为这是由于 VS2005 的 Vista 更新,因为我找不到更高版本的 redist。

它适用于我的开发机器,但不适用于我的 Win7 x64 机器。因此,错误是:

“C:\Program Files\ScanScope\Controller\ACBarOmniServer.exe”的激活上下文生成失败。相关程序集 Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195" 找不到。请使用 sxstrace.exe 进行详细诊断。

在此之前,我已经安装了 VS2005 C++ 可再发行包。我尝试再次安装它,没有运气。我翻遍了我的 Winsxs 文件夹,果然,这个版本不见了。

当我从这里运行 redist 安装程序时,我会在我的 sxs 文件夹中获得以下版本的 CRT:

  • 8.0.50727.42
  • 8.0.50727.762
  • 8.0.50727.4053
  • 8.0.50727.4940

当然,我需要版本8.0.50727.6195

我已经设置了所有我可以静态链接的东西(即 /MT,静态链接到 MFC,没有链接到 ATL),但其他的东西取决于 C 运行时的动态版本。

我使用 sxstrace 没有运气。我开始跟踪,启动我的程序,得到错误,结束跟踪,然后将其解析到不同的文件中。解析后的文件完全是空的。

一件有趣的事情要注意;当我在 Win7 机器上运行 redist 安装程序时,它会在一两秒内完成并消失。现在,我确实看到它安装在添加/删除程序中,并且确实将文件夹添加到 sxs 文件夹中,但这让我觉得很奇怪。

如果有人对此帮助有任何经验,将不胜感激。如果您需要我遗漏的任何信息,请告诉我。

4

1 回答 1

4

在这里找到正确的可再发行补丁。

这是发送给 VS2005 用户的更新,但不发送给公众。 叹息,哦,好吧。

于 2012-01-16T19:59:09.730 回答