HI 我使用visualstudio通过c ++创建了一个exe。我创建了一个com componet,它发现了特定machine.now在c ++程序中使用visualstudio的所有sqlserver实例。我编写main()并使用com组件。
现在它应该在我的两个工作站上工作,这是w2k3机器。当我尝试在 w2k8机器上运行时,我得到了错误
应用程序无法启动,因为并排配置不正确,有关详细信息,请参阅应用程序事件错误日志
我打开应用程序错误日志,发现错误为
“E:\ SQLDiscovery.exe”的激活上下文生成失败。无法找到依赖程序集Microsoft.VC80.DebugCRT,processorArchitecture =“x86”,publicKeyToken =“1fc8b3b9a1e18e3b”,type =“win32”,version =“8.0.50608.0”。请使用sxstrace.exe进行详细诊断。
如何解决这个问题请帮助我
答案 0 :(得分:6)
您必须在W2k8上安装VC8 Runtime。这是由于Windows并排配置。
在构建和EXE时,会生成一个名为“manifest”的特殊文件,此清单文件描述了应用程序为正确运行所需的C运行时库的版本。
然后将Manifest嵌入到您的exe / dll中(如果您实际使用记事本打开.dll / exe并滚动到最后,您将以xml格式看到它),您还可以使用mt.exe(清单工具)来查看任何可执行文件中的清单。
当您将应用程序移动到W2k8时,您必须确保安装了从属CRT(除非您将应用程序静态链接到CRT)。
您可以通过其中任何一个解决此问题 1-安装VC8 Debug CRT 2-将应用程序构建为静态链接
查看此博客 http://detritus.blogs.com/lycangeek/2006/08/diagnosis_of_wi.html 它包含有关如何调试winsxs问题的有用信息。
希望这有帮助
答案 1 :(得分:1)
问题是EXE需要调试CRT DLL并且它们不在2008机器上。你如何解决这个问题取决于你想要/需要做什么。
如果要使用调试CRT,请静态链接到CRT(无需在2008计算机上安装DLL)或在与EXE相同的目录中创建名为“Microsoft.VC80.DebugCRT”的目录,并将必要的DLL 和调试CRT清单文件放在那里。
调试CRT不可再发行,AFAIK没有办法“安装调试CRT”而不是安装所有Visual Studio。
如果您实际上不需要调试CRT,请与发行版本链接。同样,您需要在静态LIB和DLL版本之间进行选择。好消息是发布CRT是可再发行的,请检查vcredist_x86.exe
的Visual Studio安装目录。
答案 2 :(得分:1)