问题描述
|
我正在两台开发计算机上使用VS2010编写C ++应用程序-都是Win7 64位SP1。我使用git同步存储库。
在其中一台计算机上,编译的可执行文件(以及测试exec)停止工作并出现以下错误,而在另一台计算机上,它可以正常工作,并且我可以继续开发。
应用程序无法正确启动(0xc000000d)。单击“确定”关闭该应用程序。
我尝试删除存储库并再次克隆。我还确保我具有相同版本的Boost,git,Visual Studio。另外,我尝试调试(介入),但是在到达任何代码行之前都会发生错误。
据我所知,我正在跟踪Visual Studio的解决方案\\项目配置文件,如此处所述。
我不知所措,您将如何调试呢?
更新1:
仅调试版本无法运行。发布版本运行良好
更新2:无效的可执行文件确实可以在另一台计算机上工作!
更新3:我已经重新安装了VS2010(版本完全相同)-并没有帮助。令人惊讶的是,两台计算机之间的编译文件大小不同。
解决方法
我遇到了与您提到的相同的问题。
我的解决方案:
清理清单文件并重建
在属性页->清单工具->中,确保\“其他选项\”设置为空。
(我之前将其设置为\“ / validate_manifest \”)。
或者,您可以尝试\“ Embed Manifest-> NO \”,重新生成,然后设置回Yes。听起来很荒谬,但有时确实有效。我不知道为什么。
,我突然在Win7 / VS2010 / C ++上没有警告就得到了相同的现象。调试应用无法启动,初始化和加载多个dll时得到0xC000000D。找到了我自己负责的一个基本dll,并使用了链接器设置。修改设置,增量重建->应用程序启动,全部重建->应用程序再次崩溃。在链接器设置中将“生成清单”设置为“否”后,示例应用程序可以运行,但是主应用程序仍然崩溃。将我的大多数dll的\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\。这些东西非常虚假,因为某些dll需要修改的设置,而其他则不需要。
,看看这个问题的前两个答案
程序崩溃并出现0xC000000D且没有异常-如何调试它?
在发生故障的计算机上,尝试在调试器下而不是在运行调试可执行文件,并更新问题以说明会发生什么。如果它崩溃了,您是否能够在消息框仍然存在的情况下附加调试器,并获得一个堆栈跟踪信息来告诉您崩溃的功能是什么?
,这是最奇怪的事情。
尝试删除\“ ipch \”目录,然后重新构建。
希望它对您有用,我为此浪费了时间。
,禁用/启用预编译头对我来说解决了这个问题。
我仅在Debug x64上面临崩溃-我想这与从1.50升压到1.52的升级有关,同时保留了pch文件。
,就我而言,我通过在所有项目上将generate manifest设置为NO来使其再次工作
,我已经将“嵌入清单”设置更改为“否”,然后又恢复为“是”,但没有帮助。
对我来说,为我的程序将General-> Platform Toolset设置为Windows SDK 7.1,并使用它编译的所有依赖库都可以。
,ipch只是删除整个文件夹,它将清除它。我也困惑了一段时间。
,我在运行于MSVC2015的项目中使用通过MSVC2010编译的OpenCV库时看到错误。将项目配置属性->常规->平台工具集从Visual Studio 2015(v140)更改为Visual Studio 2010(v100)解决了该错误。