C++ - 无法正确启动 (0xc0150002)

Posted

技术标签:

【中文标题】C++ - 无法正确启动 (0xc0150002)【英文标题】:C++ - unable to start correctly (0xc0150002) 【发布时间】:2011-02-26 09:26:27 【问题描述】:

我正在尝试通过Microsoft Visual C++ 2010 Express 运行OpenCV 应用程序,并收到以下消息:

我该如何解决这个问题?

【问题讨论】:

程序是在显示此消息的开发计算机上还是在另一台计算机上崩溃? 这些有帮助吗? social.msdn.microsoft.com/Forums/en/Vsexpressvc/thread/… @Fox32。在开发计算机上 是安装问题。 Windows 事件日志告诉您出了什么问题。 【参考方案1】:

我同意 Brandrew 的观点,这个问题很可能是由一些缺失的 dll 引起的,这些 dll 在系统路径和可执行文件所在的文件夹中都找不到。尝试将以下 DLL 放在可执行文件附近:

Visual Studio C++ 运行时(在 VS2008 中,可以在 C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86 等位置找到它们。)包括所有 3 个 DLL 文件以及清单文件. 四个 OpenCV dll(cv210.dll、cvaux210.dll、cxcore210.dll 和 highgui210.dll,或者您的 OpenCV 版本具有的那些) 如果这仍然不起作用,请尝试调试 VS 运行时(为“调试”编译的可执行文件使用一组不同的 dll,命名为 msvcrt9d.dll,重要部分是“d”)

或者,尝试将可执行文件加载到 Dependency Walker (http://www.dependencywalker.com/),它应该会为您指出丢失的 dll。

【讨论】:

【参考方案2】:

在我的例子中,我用来追踪 Visual Studio 2015 中内存泄漏的 Visual Leak Detector 缺少 Microsoft 清单文件 Microsoft.DTfW.DHL.manifest,请参阅链接 Building Visual Leak Detector 一直向下。此文件必须位于您的配置中 vld.dllvld_x64.dll 所在的文件夹中,例如 C:\Program Files (x86)\Visual Leak Detector\bin\Win32C:\Program Files (x86)\Visual Leak Detector\bin\Win64Debugx64/Debug

【讨论】:

面临 OP 提到的问题。通过将所有 dll 和清单文件复制到二进制文件到可执行目录来修复。【参考方案3】:

我认为这是一个 Vista 窗口!我第一次尝试将 DirectX 程序从 XPsp3 移植到 Vista 时经常遇到这种情况。

这是一个 .dll 问题。 OpenCV runtime.dll 将调用一个将不再在 Vista 中提供的 system.dll,因此不幸的是,您将不得不花一些时间寻找它试图找到的 system.dll。 (system.dll可以是vc2010或者vista)

此错误也是由于 .dll 安装不正确(即未推出)引起的 hth 狩猎愉快

【讨论】:

我正在使用Windows 7。是不是很相似?我的意思是解决方案 @user588855 XP 上的错误编号是相同的,在我的情况下,这只是让客户端更新其 DirectX 库的问题。 Latanius 与dependency walker 的链接看起来是进一步调查的好地方。 HTH【参考方案4】:

我在将朋友的解决方案文件转换为 2010 版本后尝试通过 Visual Studio 2010 运行我的朋友的解决方案文件时遇到此错误。修复很简单,我创建了新项目,右键单击解决方案以从我朋友的项目中添加现有的 .cpp 和 .h 文件。然后就可以了。

【讨论】:

【参考方案5】:

在dependency walker中运行.exe文件(http://dependencywalker.com/) 它会指向您丢失的 dll 并下载这些 dll (www.dll-files.com) 并将 c:windows:system32 和文件夹粘贴为您的 .exe,甚至在路径变量中提供这些 dll 的路径。

【讨论】:

【参考方案6】:

即使我遇到了同样的错误,我后来也修复了它...... 您需要研究的两件事

    您的系统路径是否在您的环境变量中正确设置 在项目属性->c/c++->预处理器中检查预处理器。检查您是否包含_CONSOLE,这对我来说是错误的。对于某些应用程序,您需要包含WIN32;_WINDOWS;_CONSOLE;_DEBUG;QT_DLL;QT_GUI_LIB;QT_NETWORK_LIB;QT_CORE_LIB;COIN_DLL;SOQT_DLL;QT_DEBUG;

我在使用 coin3D 应用程序时遇到此错误。

【讨论】:

【参考方案7】:

我遇到了这样的问题。 Visual Studio 2008 明确表示:问题是由 libtiff.dll 引起的。由于它的清单(事实上,这个 dll 根本没有清单),它无法加载。当我从我的项目中删除 libtiff.dll 时,我修复了它(但同时我失去了打开压缩 TIFF 的能力!)。我重新编译了上述dll,但问题仍然存在。有趣的是,在我自己的机器上我没有这样的错误。其他三个组合拒绝加载我的编。注意力!!!在这里http://www.error-repair-tools.com/ppc/error.php?t=0xc0150002 一个聪明的男孩写道,这个错误是由注册表问题引起的,并提供了修复工具。我有一个可靠的猜测,这个“修复工具”会在你的电脑上安装一些恶意软件。

【讨论】:

【参考方案8】:

这是因为您的程序缺少或找不到 DLL。

在您的情况下,我相信您缺少 openCV dll。您可以在 Open CV 附带的“build”目录下找到这些内容。如果您使用 VS2010 并构建到 x86 程序,您可以在“opencv\build\x86\vc10\bin”下找到您的 dll。只需将所有这些文件复制到您的 Debug 和 Release 文件夹即可解决您的问题。

通常您可以使用以下步骤解决此问题:

    从这里下载 Dependency Walker:http://www.dependencywalker.com/ 将您的 .exe 文件加载到 Dependency Walker(在您的项目 Debug 或 Release 文件夹下),在您的情况下,这将是 DisplayImage.exe 查找任何丢失、损坏或用于错误架构(即 x64 而不是 x86)的 DLL,这些 DLL 将以红色突出显示。 对于您缺少的每个 DLL,请使用 .exe 复制到 Debug 或 Release 文件夹,或安装所需的软件,或将 DLL 的路径添加到环境变量(Win+Pause -> Advanced System Settings - > 环境变量)

请记住,您需要将这些 DLL 与您的 .exe 放在同一目录中。如果您将 .exe 从 Release 文件夹复制到其他位置,那么您还需要将这些 DLL 与 .exe 一起复制。为了可移植性,我倾向于尝试使用全新安装的 Windows(未安装更新或程序)测试虚拟机,然后我使用 Dependency Walker 逐个遍历依赖项,直到程序运行良好。

这是一个常见问题。另请参阅以下问题:

Can't run a vc++, error code 0xc0150002

The application was unable to start (0xc0150002) with libcurl C++ Windows 7 VS 2010

0xc0150002 Error when trying to run VC++ libcurl

The application was unable to start correctly 0xc150002

The application was unable to start correctly (0*0150002) - OpenCv

祝你好运!

【讨论】:

【参考方案9】:

在我们的例子中(在尝试 Dependency Walker 之后),这是一个错误的清单文件,混合了 64 位和 32 位。在调试模式下运行时,我们使用了两个额外的文件:dbghelp.dll 和 Microsoft.DTfW.DHL.manifest。 清单文件如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- $Id -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <noInheritable />
    <assemblyIdentity type="win32" name="Microsoft.DTfW.DHL" version="6.11.1.404" processorArchitecture="x86" />
    <file name="dbghelp.dll" />
</assembly>

注意“处理器架构”字段。它被设置为“amd64”而不是“x86”。这可能并不总是原因,但在我们的例子中,它是根本原因,所以它可能对某些人有帮助。对于 64 位运行,您需要“amd64”。

【讨论】:

【参考方案10】:

当我通过 .exe 请求的 DLL 提供可执行文件夹时,我遇到了这个问题。 就我而言,我提供给 .exe 的 DLL 正在搜索另一个不可用的必要 DLL。 搜索 DLL 无法告知它找不到所需的 DLL。

您可以检查您正在加载的 DLL 以及这些 DLL 的依赖关系。

【讨论】:

【参考方案11】:

这是我对这个错误的解决方案:

(应用程序无法正常启动(OXO15OOO20)。点击关闭应用程序)。

    从“开始”菜单中,单击“管理工具”,然后单击“Windows Server Backup”。

    单击文件,单击选项,然后在磁盘清理中按删除文件,然后按确定, 并删除直到它达到0字节

不用担心,它只会删除您计算机上的磁盘空间量。

【讨论】:

以上是关于C++ - 无法正确启动 (0xc0150002)的主要内容,如果未能解决你的问题,请参考以下文章

vs2010编译出的exe“应用程序无法正常启动(0xc0150002)”

包含vld.h后,“应用程序无法正确启动”

OpenCV 出错

[zz]VC2005-应用程序正常初始化失败-0xc0150002

应用程序错误 - 调试 exe 无法运行

C++程序启动时报“0xC000007B”无法启动的问题排查