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

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

我该如何解决这个问题?

【问题讨论】:

标签: c++ visual-studio opencv


【解决方案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】:

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

        1. 您的系统路径是否在您的环境变量中正确设置
        2. 在项目属性->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 文件夹即可解决您的问题。

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

            1. 从这里下载 Dependency Walker:http://www.dependencywalker.com/
            2. 将您的 .exe 文件加载到 Dependency Walker(在您的项目 Debug 或 Release 文件夹下),在您的情况下,这将是 DisplayImage.exe
            3. 查找任何丢失、损坏或用于错误架构(即 x64 而不是 x86)的 DLL,这些 DLL 将以红色突出显示。
            4. 对于您缺少的每个 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)。点击关闭应用程序)。

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

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

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

                  【讨论】:

                    猜你喜欢
                    • 2014-12-13
                    • 2021-10-10
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2017-06-19
                    • 1970-01-01
                    相关资源
                    最近更新 更多