我有一个尴尬的情况,我有一个必须在x64应用程序中使用的32位库。为了解决此问题,我创建了一个COM服务器应用程序来处理32位和64位进程之间的通信。
一切都在Windows 7版本8.0.50727.867
的VS2005中构建。我注意到的一件事是我的版本与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文件夹,但这让我感到奇怪。
如果有人在此帮助方面有任何经验,将不胜感激。如果您需要我遗漏的任何信息,请告诉我。
最佳答案
找到正确的可再发行补丁here。
这是发送给VS2005用户的更新,但不发送给公众。叹气,哦,很好。