Visual Studio 2008 - 为什么我的 VS2010 本机 C++ 应用程序不会突然启动,从而出现并排错误?
visual studio 2008 - Why won't my VS2010 native C++ application suddenly start, giving a side-by-side error?
硬件升级后,我不得不重新安装系统(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库。我可以做些什么来运行我的应用程序?
编辑:我在此处包含sxtrace的输出。有一些对可执行文件的引用,但它们看起来都一样,我选择了32位的,因为应用程序是以32位:构建的
F: \cci\Debug>sxtrace跟踪-日志文件:Trace.etl跟踪已启动。跟踪将保存到文件Trace.etl中。按Enter键停止跟踪。。。
F: \cci\Debug>sxtrace分析-日志文件:trace.etl-输出文件:sxs.out正在分析日志文件跟踪.etl。。。分析完成!输出保存到文件sx.out.
sx.out:的内容
开始生成激活上下文
输入参数:
标志=0
ProcessorArchitecture=Wow32
CultureFallBacks=en-US;en
ManifestPath=F:\cci\Debug\gui.exe
AssemblyDirectory=F:\cci\Debug\
应用程序配置文件=
信息:正在分析清单文件F:\cci\Debug\gui.exe。
信息:清单定义标识为(null)
信息:参考:Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"
信息:正在解析引用Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="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.VS90.DebugCRT.DLL中的清单。
信息:尝试探测F:\cci\Debug\Microsoft.VC90.DebugCRT\Microsoft.VS90.DebugCRT.manifest处的清单。
信息:未找到非特定区域性的清单
信息:结束程序集探测
错误:无法解析引用Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"。
错误:激活上下文生成失败
结束激活上下文生成。
显示在"控制面板"中已安装程序中的"VS2008运行时"不包括调试运行时。它是可重新分发的运行时,所以它只有运行时的"发布"版本。但是,由于在重新安装之前,您的机器上已经安装了VS2008,这就是它以前工作的原因——调试运行时包含在开发工具中。
一些解决问题的选项:
- 重新安装VS 2008(我认为如果您不能再访问另一个,VC++Express 2008就足够了)
- 使用VS2010(或您想要的任何版本)重建程序
如果你想让没有安装工具的人(可能包括你)使用你的程序,你应该考虑在发布模式下构建它和/或使用静态链接的运行时构建它。
Microsoft.VC90.*调试*CRT
是的,该DLL在您的计算机上不可用,您没有安装VS2008。你也不能从微软获得它,它是一个不可分发的文件。
请担心为什么您的VS2010项目依赖于VS2008版本的CRT,这是非常不健康的。还有一个非常令人不快的部署头痛,有足够的理由来解决这个问题。
除了安装VS2008之外,您还可以在另一台安装了VS2008的计算机上创建一个安装和部署项目,以获取新计算机上的调试DLL。项目+属性+先决条件,取消勾选.NET框架。Project+Add+Merge Module可从c:\program files\common files\Merge Module添加DLL和策略文件的调试合并模块。
我遇到过一个案例,在VS 2008环境中构建COM DLL(仅用于开发目的),而项目中的其他组件使用的是更新版本的Visual Studio。这组说明详细介绍了如何使用Visual Studio 2008安装程序仅安装VS 2008 VC++运行时文件,而不安装其他不必要的软件。如果可能的话,建议在安装Visual Studio 2010或任何后续VS版本之前遵循这些步骤。
- 运行Visual Studio 2008安装程序。ISO可以使用MSDN Subscriber Downloads下载
- 在"Visual Studio 2008安装程序"对话框中,选择"安装Visual Studio 2008"
- 出现"Microsoft Visual Studio 2008"对话框。单击"下一步"
- "起始页"-接受许可条款,单击"下一步"
- "选项页"-选择"自定义",单击"下一步"
- "选项页"-取消选择所有内容。导航到:Microsoft Visual Studio 2008 Professional->语言工具->Visual C++->Visual C++工具。选中"Visual C++运行时库"(下面的所有内容都已选中)。单击"安装"
- -->安装继续
- 出现"完成页面"。单击"完成"
- "Microsoft Visual Studio 2008"对话框再次出现。单击"退出"安装后,卸载已安装的东西,但不能选择不安装。从"添加/删除程序"(程序和功能)中,卸载以下内容:
- Microsoft SQL Server数据库发布向导1.2
- Microsoft Visual Studio Web创作组件
- Microsoft文档资源管理器2008
- Microsoft Windows SDK for Visual Studio 2008.NET Framework工具
- Microsoft SQL Server Compact 3.5简体中文
- Microsoft SQL Server Compact 3.5设计工具简体中文
- Microsoft Visual Studio 2008远程调试器
- Microsoft Visual Studio 2008远程调试器精简版(x64)-简体中文
- Microsoft Windows SDK for Visual Studio 2008工具
- Microsoft Windows SDK for Visual Studio 2008标头和库
- Microsoft Windows SDK for Visual Studio 2008 SDK参考程序集和IntelliSense
- Microsoft Visual Studio 2008系统必备
- Microsoft SQL Server 2008管理对象
- 适用于Win32的Microsoft Windows SDK for Visual Studio 2008 SP1学习工具
- Microsoft Windows SDK for Visual Studio 2008 SP1.NET Framework学习工具-enu
卸载这些产品后,只剩下两个产品(从VS 2008安装):
- Microsoft Visual C++2008 Redistributable-x86 9.0.30729
- Microsoft Visual Studio 2008专业版-简体中文
- 如何修复valgrind启动时的致命错误(与libc6-dbg和libc6-dbg:i386连接)
- 系统错误:程序无法启动,因为您的计算机中缺少MSVCP140D.DLL。尝试重新安装该程序以解决此问题
- 在我的以下代码中获取 MLE(内存限制错误).尝试解决 ROUND C 2019(问题 A-摆动行走)启动问题
- 谷歌启动B轮巴士路线问题错误的答案?
- 发出给我的理解错误消息(启动C++/编程)
- 谷歌启动2018,测试用例中的整数错误
- 通过服务启动进程后,从SHGetKnownFolderPath 0x80070005错误
- 尝试在我的基类中启动线程时,Visual Studio 由于调试错误而中止我的程序
- 启动线程会导致指针初始化时出现分段错误
- 使用SDL2 C 时,该应用程序无法正确启动(0xc000007b)错误
- 如何使用 Twincat3 启动/重新启动 PLC(错误 1793)
- Luci 无法启动请求的 CGI 程序:/www/cgi-bin/sample.cgi:执行错误
- 常时等量启动失败.错误: 0x2 ;当开始从 2 个相机 PTGrey 读取时
- 如何在windows服务中显示启动错误消息
- GDB 7.11启动错误
- 应用程序无法正确启动错误
- 仅当循环展开时,才没有未指定的启动错误
- Windows服务启动错误错误193 0xc1在win2k3上转换为VC2012后
- vc2012发布版本遇到启动错误
- cmake target_link_libraries()启动错误不能指定目标"debug"的链接库