neu*_*rte 2 c++ visual-studio-2010 visual-studio-2008 windows-7
硬件升级后,我不得不重新安装我的系统(Win7).在升级之前,我还运行了Win7和VS2010,我的应用程序在发行版和调试版中都没有出现问题.现在我编译并链接它,但是当我尝试运行它时,我得到:
应用程序无法启动,因为它的并排配置不正确.有关更多详细信息,请参阅应用程序事件日志或使用命令行sxstrace.exe工具.
事件日志显示:
无法找到依赖程序集Microsoft.VC90.DebugCRT,processorArchitecture ="x86",publicKeyToken ="1fc8b3b9a1e18e3b",type ="win32",version ="9.0.21022.8".请使用sxstrace.exe进行详细诊断.
对于特定的可执行文件 对我来说很奇怪的是,我在控制面板中安装的程序中看到了VS2008运行时.更奇怪的是它曾经在我的旧装置上工作一周.在升级到VS2010之前我有VS2008,所以也许这就是原因.无论如何,我也不明白为什么VS2010不能将我的二进制文件链接到最新的(VC10)运行时库,而是依赖于(不存在的?)VC9.0.我该怎么做才能让我的应用程序运行?
编辑:我在这里包含sxstrace的输出.有一些对可执行文件的引用,但它们看起来大致相同,我选择了32位,因为应用程序构建为32位:
F:\ cci\Debug> sxstrace Trace -logfile:trace.etl跟踪已启动.跟踪将保存到文件trace.etl.按Enter键停止跟踪...
F:\ cci\Debug> sxstrace Parse -logfile:trace.etl -outfile:sxs.out解析日志文件trace.etl ...解析完成!输出保存到文件sxs.out.
sxs.out的内容:
开始激活上下文生成.
输入参数:
Flags = 0
ProcessorArchitecture = Wow32 CultureFallBacks
= en-US; zh
ManifestPath = F:\ cci\Debug\gui.exe
AssemblyDirectory = F:\ cci\Debug\
Application Config File =
INFO:Parsing Manifest File F:\ cci \调试\ gui.exe.
信息:清单定义标识是(null).
信息:参考:Microsoft.VC90.DebugCRT,processorArchitecture ="x86",publicKeyToken ="1fc8b3b9a1e18e3b",type ="win32",version ="9.0.21022.8"
INFO:解析参考Microsoft.VC90.DebugCRT,processorArchitecture ="x86"公钥= "1fc8b3b9a1e18e3b",类型= "Win32的",版本= "9.0.21022.8".
信息:解决ProcessorArchitecture WOW64的参考.
信息:解决文化中立的参考.
信息:应用绑定策略.
信息:未找到发布者政策.
信息:找不到绑定策略重定向.
信息:开始装配探测.
信息:没有在WinSxS中找到程序集.
信息:尝试在C:\ Windows\assembly\GAC_32\Microsoft.VC90.DebugCRT\9.0.21022.8__1fc8b3b9a1e18e3b\Microsoft.VC90.DebugCRT.DLL中探测清单.
信息:没有找到文化中立的清单.
信息:结束装配探测.
信息:解析ProcessorArchitecture x86的参考.
信息:解决文化中立的参考.
信息:应用绑定策略.
信息:未找到发布者政策.
信息:找不到绑定策略重定向.
信息:开始装配探测.
信息:没有在WinSxS中找到程序集.
信息:尝试在C:\ Windows\assembly\GAC_32\Microsoft.VC90.DebugCRT\9.0.21022.8__1fc8b3b9a1e18e3b\Microsoft.VC90.DebugCRT.DLL中探测清单.
信息:尝试在F:\ cci\Debug\Microsoft.VC90.DebugCRT.DLL中探测清单.
信息:尝试在F:\ cci\Debug\Microsoft.VC90.DebugCRT.MANIFEST中探测清单.
信息:尝试在F:\ cci\Debug\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.DLL中探测清单.
信息:尝试在F:\ cci\Debug\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.MANIFEST中探测清单.
信息:没有找到文化中立的清单.
信息:结束装配探测.
错误:无法解析引用Microsoft.VC90.DebugCRT,processorArchitecture ="x86",publicKeyToken ="1fc8b3b9a1e18e3b",type ="win32",version ="9.0.21022.8".
错误:激活上下文生成失败.
结束激活上下文生成.
在控制面板中安装的程序中显示的"VS2008运行时"不包括调试运行时.它是可再发行的运行时,因此它只有运行时的"发布"版本.但是,由于您在重新安装之前已在计算机上安装了VS 2008,这就是之前工作的原因 - 调试运行时包含在开发工具中.
解决问题的一些选项:
如果您希望未安装工具(可能包括您)的人员可以使用您的程序,则应考虑在发布模式下构建它和/或使用静态链接的运行时构建.