C ++应用程序无法正确启动(0xc000000d)

时间:2011-04-13 11:25:38

标签: c++ visual-studio

我正在两台开发计算机上使用VS2010编写C ++应用程序 - 两者都是Win7 64位SP1。我使用git来同步存储库。

在其中一台机器上,已编译的可执行文件(以及测试执行程序)停止使用以下错误,而在另一台机器上它工作正常,我可以继续开发。

  

应用程序无法正确启动(0xc000000d)。单击“确定”关闭应用程序。

我尝试删除存储库并再次克隆它。我还确保我有相同版本的Boost,git,Visual Studio。此外,我尝试调试(踩到),但错误发生在任何代码行之前。

请注意,据我所知,我正在将Visual Studio的解决方案\项目配置文件跟踪为detailed here

我很茫然,你会怎么调试这个?

更新1: 只有Debug版本无法运行。发布版本运行良好

更新2 :无效的可执行文件 可以在另一台计算机上运行!

更新3:我重新安装了VS2010(完全相同的版本) - 没有帮助。令人惊讶的是,两台机器之间编译的文件大小不同。

9 个答案:

答案 0 :(得分:3)

我遇到了你提到的同样的问题。 我的解决方案:

  1. 清理清单文件并重建
  2. 在属性页面中 - >清单工具 - >确保“其他选项”设置为空。 (我之前将其设置为“/ validate_manifest”。)
  3. 或者你可以试试“Embed Manifest - > NO”,重建然后回到Yes。这听起来很荒谬,但它确实有时会起作用。我不知道为什么。

答案 1 :(得分:2)

我在Win7 / VS2010 / C ++上没有出现警告时突然出现了同样的现象。 Debug App无法启动,在初始化和加载多个dll时得到0xC000000D。找到了我自己负责的一个基本dll,使用链接器设置。修改设置,增量重建 - >应用启动,重建所有 - >应用程序再次崩溃。在链接器设置中将“生成清单”设置为“否”后,示例应用程序正常工作,但主应用程序仍然崩溃。将“生成清单”设置为“否”后,为我的大多数dll设置了 - >应用程序再次以调试模式启动。这些东西非常虚假,因为有些dll需要修改其他设置的设置。

答案 2 :(得分:1)

查看此问题的前两个答案

Program crashes with 0xC000000D and no exceptions - how do I debug it?

在失败的机器上,尝试运行不在调试器下的调试可执行文件,并更新您的问题以说明会发生什么。如果它崩溃了,你是否能够在消息框仍然存在时附加调试器并获得一个堆栈跟踪,告诉你它崩溃了什么功能?

答案 3 :(得分:1)

这是最奇怪的事情......

尝试删除“ipch”目录,然后重建。

希望它适合你,我浪费了很多时间。

答案 4 :(得分:1)

禁用/启用预编译标头为我解决了这个问题。 我只在Debug x64上遇到崩溃 - 我猜这与从1.50升级到1.52有关,同时保留了pch文件。

答案 5 :(得分:0)

在我的情况下,我通过在所有项目中将生成清单设置为NO来再次使用它

答案 6 :(得分:0)

我已将“嵌入清单”设置更改为“否”,然后返回“是”,但它没有帮助。 对我来说,为我的程序设置General-> Platform Toolset到Windows SDK 7.1,并且用它编译的所有依赖库都有帮助。

答案 7 :(得分:0)

这是ipch只是删除整个文件夹,它将清除它。我也困惑了一段时间。

答案 8 :(得分:0)

我在MSVC2015上运行的项目中使用与MSVC2010一起编译的OpenCV库时看到了错误。更改项目配置属性 - > General->从Visual Studio 2015(v140)到Visual Studio 2010(v100)的平台工具集解决了错误。