我有一个尴尬的情况,我有一个必须在x64应用程序中使用的32位lib。为了解决这个问题,我创建了一个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文件夹,果然,版本丢失了。
当我从here运行redist安装程序时,我在sxs文件夹中获得了以下版本的CRT:
当然,我需要版本8.0.50727.6195
。
我已经设置了静态链接的所有内容(即/ MT,静态链接到MFC,没有到ATL的链接),但其他东西依赖于C运行时的动态版本。
我使用sxstrace没有运气。我启动跟踪,启动我的程序,获取错误,结束跟踪,并将其解析为另一个文件。解析后的文件完全为空。
值得注意的一件事;当我在Win7盒子上运行redist安装程序时,它会在一两秒内完成并消失。现在,我确实看到它安装在添加/删除程序中,它确实将文件夹添加到sxs文件夹中,但这让我感到奇怪。
如果有任何人有这种帮助的经验,将不胜感激。如果您需要我遗漏的任何信息,请告诉我。