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

6
我正在使用VS2010在两台开发计算机上编写C++应用程序,两台计算机都是Win7 64位 SP1。我使用git同步存储库。
在其中一台计算机上,已编译的可执行文件(以及测试exec)停止工作,并显示以下错误,而在另一台计算机上,它可以正常工作,我能够继续开发。
“应用程序无法正确启动(0xc000000d)。单击“确定”关闭应用程序。”
我尝试删除存储库并重新克隆它。我还确保我具有相同版本的Boost、git和Visual Studio。此外,我尝试进行调试(逐步跟踪),但出现错误之前没有任何代码行。
请注意,据我所知,我正在跟踪Visual Studio的解决方案/项目配置文件,如详细说明
我不知所措,您会如何调试此问题?
更新1:只有Debug版本无法运行。Release版本运行良好。
更新2:不起作用的可执行文件在其他计算机上可以正常工作!
更新3:我已重新安装了VS2010(完全相同的版本)-没有帮助。令人惊讶的是,在两台计算机之间,编译后的文件大小不同。

4
使用Dependency Walker - http://www.dependencywalker.com/ - 查看DLL版本差异。 - Erik
你能调试它并检查它能运行到哪里吗? - rturrado
两台机器上都安装了Visual C++吗?它们使用的是同一个版本的Visual C++吗? - James McNellis
1
检查对WinSXS缓存的引用。相同的库VC90.CRT(这是针对VS2008的,假设是前身)可能存在不同的版本。这可能是由于仅在其中一台计算机上安装了VS服务包所致。检查开发应用程序所需的版本和在WinSXS中找到的版本。 - harper
3
你能查看事件日志以获取有关此异常的更多信息,以及其发生的地址吗? - Collin Dauphinee
显示剩余8条评论
9个回答

3

我遇到了您提到的相同问题。 我的解决方案:

  1. 清空清单文件并重新构建
  2. 在属性页面 ->清单工具中 ->确保"附加选项"设置为"nothing"。(之前我将其设置为"/validate_manifest")。

或者您可以尝试"嵌入清单 -> NO",重新构建,然后重新设置为Yes。这听起来很荒谬,但有时确实有效。 我不知道为什么。


2
我在Win7/VS2010/C++上突然遇到了同样的问题,调试应用程序无法启动,在初始化和加载多个dll时出现0xC000000D错误。找到了一个负责自己基础dll的问题,尝试了一些链接器设置。修改设置、增量重建->应用程序启动,重新构建所有->应用程序再次崩溃。在链接器设置中将“生成清单”设置为“否”,示例应用程序可以工作,但主应用程序仍然崩溃。在大部分的dll中将“生成清单”设置为“否”->应用程序再次在调试模式下启动。这个问题非常零散,因为有些dll需要修改的设置,而其他dll则不需要。

1

看一下这个问题的前两个答案

程序崩溃,出现0xC000000D错误,没有异常 - 我该如何调试?

在出现问题的机器上,尝试运行调试可执行文件而不是在调试器下运行,并更新您的问题以说明发生了什么。如果它崩溃了,您能否在消息框仍然存在时附加调试器并获取堆栈跟踪,告诉您它正在哪个函数中崩溃?


这个错误在我使用VS2010(F5)运行和运行可执行文件时都会出现。这个错误是一个带有单个OK按钮的弹窗(没有中止\重试\忽略选项)。 - Jonathan Livni
在那个阶段,你能否使用debug->attach-to-process附加调试器? - James Crook

1

这是最奇怪的事情...

尝试删除 "ipch" 目录,然后重新构建。

希望它对你有用,我在这上面浪费了几个小时。


我尝试了几次git cleanup,也删除了ipch目录,但都没有成功。 - Jonathan Livni

1
禁用/启用预编译头对我的问题有所帮助。 我只在 Debug x64 模式下遇到崩溃 - 我猜这可能与从 boost 1.50 升级到 1.52 有关,同时保留了 pch 文件。

0

这是 ipch 文件夹,只需将整个文件夹删除即可清除。我之前也感到困惑。


0

在我的情况下,我通过将所有项目的“生成清单”设置为“否”,使其再次正常工作。


0

我已经将 "嵌入清单" 设置更改为“否”,然后再更改为“是”,但并没有帮助。对于我的程序和所有编译它的依赖库,将“常规” -> “平台工具集”设置为Windows SDK 7.1有帮助。


0

我在使用OpenCV库编译MSVC2010的项目中遇到了错误,该项目在MSVC2015上运行。将项目配置属性- >常规- >平台工具集从Visual Studio 2015(v140)更改为Visual Studio 2010(v100)解决了该错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接