web-dev-qa-db-ja.com

C ++-正しく起動できません(0xc0150002)

Microsoft Visual C++ 2010 Expressを介してOpenCVアプリケーションを実行しようとしていますが、次のメッセージが表示されます。

enter image description here

この問題を解決するにはどうすればよいですか?

16
Simplicity

私はBrandrewに同意します。問題は、システムパスにも実行可能ファイルが存在するフォルダにも見つからないいくつかのdllの欠落が原因である可能性が高いです。次のDLLを実行可能ファイルの近くに配置してみてください。

  • visual Studio C++ランタイム(VS2008では、C:\ Program Files\Microsoft Visual Studio 9.0\VC\redist\x86のような場所にあります。)DLLファイルの3つすべてを含めるマニフェストファイルも同様です。
  • 4つのOpenCV dll(cv210.dll、cvaux210.dll、cxcore210.dll、highgui210.dll、またはOpenCVバージョンにあるもの)
  • それでも動作しない場合は、デバッグVSランタイムを試してください(「デバッグ」用にコンパイルされた実行可能ファイルは、msvcrt9d.dllのような名前の異なるDLLのセットを使用します。重要な部分は「d」です)

あるいは、実行可能ファイルをDependency Walker( http://www.dependencywalker.com/ )にロードしてみてください。不足しているdllが示されます。

11
Latanius

私の場合、 Visual Leak Detector Visual Studio 2015でメモリリークを追跡するために使用していましたが、MicrosoftマニフェストファイルMicrosoft.DTfW.DHL.manifestがありませんでした、リンクを参照してください Building Visual Leak Detector all down 。このファイルは、C:\Program Files (x86)\Visual Leak Detector\bin\Win32C:\Program Files (x86)\Visual Leak Detector\bin\Win64Debug、またはvld.dllなど、vld_x64.dllまたはx64/Debugが構成にあるフォルダーに存在する必要があります。

7
LastBlow

依存関係walker( http://dependencywalker.com/ )で.exeファイルを実行するだけで、不足しているdllが示され、それらのdll(www.dll-files.comがダウンロードされます) )そしてc:windows:system32とフォルダーを.exeとして貼り付け、さらにパス変数にそれらのdllのパスを提供します。

1
akash

Visual Studio 2010で友人のソリューションファイルを2010バージョンに変換した後に実行しようとすると、このエラーが発生しました。修正は簡単です。新しいプロジェクトを作成し、ソリューションを右クリックして、友人のプロジェクトから既存の.cppおよび.hファイルを追加します。その後、動作します。

1
huy_gm

私はそれがVista Windowだと考えています! XPX3からVistaにDirectXプログラムを最初に移植しようとすると、よくこの問題が発生しました。

これは.dllの問題です。 OpenCV runtime.dllは、Vistaに同梱されなくなったsystem.dllを呼び出します。そのため、残念ながら、どのsystem.dllを見つけようとしているかを見つけるために、少し狩りをする必要があります。 (system.dllはvc2010またはVistaです)

このエラーは、.dllの誤ったインストール(つまり、ロールアウトされていない)によっても引き起こされます。

1
Brandrew

同じエラーに直面しても、後で修正しました...

  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アプリケーションで作業しているときにこのエラーが発生しました。

0
user2716873

DLLがあるため、プログラムが見つからないか、見つかりません。

あなたの場合、openCV dllが欠落していると思います。これらは、オープンCVに付属の「build」ディレクトリの下にあります。 VS2010を使用してx86プログラムにビルドしている場合は、「opencv\build\x86\vc10\bin」の下にあるdllを見つけることができます。これらのファイルをすべてデバッグフォルダーとリリースフォルダーにコピーするだけで、問題が解決するはずです。

通常、次の手順を使用してこの問題を解決できます。

  1. ここから依存関係ウォーカーをダウンロードしてください: http://www.dependencywalker.com/
  2. .exeファイルを(プロジェクトのDebugまたはReleaseフォルダーの下の)Dependency Walkerに読み込みます。この場合、DisplayImage.exeになります。
  3. 欠落しているDLL、破損しているDLL、または間違ったアーキテクチャ(つまりx86ではなくx64)のDLLを探します。これらは赤で強調表示されます。
  4. 各DLLがない場合、.exeを使用してDebugまたはReleaseフォルダーにコピーするか、必要なソフトウェアをインストールするか、DLLへのパスを環境変数に追加します(Win + Pause ->システムの詳細設定->環境変数)

これらのDLLは、.exeと同じディレクトリに置く必要があることに注意してください。 .exeをReleaseフォルダーから別の場所にコピーする場合、これらのDLLも.exeでコピーする必要があります。移植性のために、Windowsのクリーンインストール(更新プログラムやプログラムはインストールされていない)でテスト仮想マシンを試してみる傾向があり、プログラムが正常に実行されるまでDependency Walkerを使用して依存関係を1つずつ調べます。

これはよくある問題です。次の質問もご覧ください。

vc ++を実行できません、エラーコード0xc0150002

アプリケーションはlibcurl C++ Windows 7 VS 2010で(0xc0150002)を開始できませんでした

xc0150002 VC++ libcurlを実行しようとしたときのエラー

アプリケーションは0xc150002を正しく開始できませんでした

アプリケーションは正しく起動できませんでした(0 * 0150002)-OpenCv

幸運を!

0
ALM865

そのような問題に出会いました。 Visual Studio 2008は明確に次のように述べています。問題はlibtiff.dllが原因でした。マニフェストが原因で何らかの理由でロードできません(実際、このDLLにはマニフェストがまったくありません)。プロジェクトからlibtiff.dllを削除したときに修正しました(同時に、圧縮されたTIFFを開くことができなくなりました!)。前述のdllを再コンパイルしましたが、まだ問題が残っています。興味深いことに、自分のマシンではそのようなエラーはありません。他の3人のコンプが私のプログラムの読み込みを拒否しました。注意!!!ここ http://www.error-repair-tools.com/ppc/error.php?t=0xc0150002 ある賢明な少年は、このエラーはレジストリの問題が原因であり、修復ツールを提供していると書いています。この「修復ツール」が悪意のあるソフトをコンプにインストールするという確信があります。

0
Andrew

私たちの場合(Dependency Walkerの試行の隣)は、64ビットと32ビットが混在した欠陥のあるマニフェストファイルでした。デバッグモードで実行中に、dbghelp.dllとMicrosoft.DTfW.DHL.manifestの2つの追加ファイルを使用します。マニフェストファイルは次のようになります。

<?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>

「processorArchitecture」フィールドに注目してください。 「x86」ではなく「AMD64」に設定されていました。おそらく常に原因ではないかもしれませんが、私たちの場合は根本的な原因であるため、一部の人にとっては役立つかもしれません。 64ビットの実行の場合、そこに「AMD64」が必要です。

0
Ruud van Gaal