Microsoft Visual C++ 2010 Express
を介してOpenCV
アプリケーションを実行しようとしていますが、次のメッセージが表示されます。
この問題を解決するにはどうすればよいですか?
私はBrandrewに同意します。問題は、システムパスにも実行可能ファイルが存在するフォルダにも見つからないいくつかのdllの欠落が原因である可能性が高いです。次のDLLを実行可能ファイルの近くに配置してみてください。
あるいは、実行可能ファイルをDependency Walker( http://www.dependencywalker.com/ )にロードしてみてください。不足しているdllが示されます。
私の場合、 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\Win32
、C:\Program Files (x86)\Visual Leak Detector\bin\Win64
、Debug
、またはvld.dll
など、vld_x64.dll
またはx64/Debug
が構成にあるフォルダーに存在する必要があります。
依存関係walker( http://dependencywalker.com/ )で.exeファイルを実行するだけで、不足しているdllが示され、それらのdll(www.dll-files.comがダウンロードされます) )そしてc:windows:system32とフォルダーを.exeとして貼り付け、さらにパス変数にそれらのdllのパスを提供します。
Visual Studio 2010で友人のソリューションファイルを2010バージョンに変換した後に実行しようとすると、このエラーが発生しました。修正は簡単です。新しいプロジェクトを作成し、ソリューションを右クリックして、友人のプロジェクトから既存の.cppおよび.hファイルを追加します。その後、動作します。
私はそれがVista Windowだと考えています! XPX3からVistaにDirectXプログラムを最初に移植しようとすると、よくこの問題が発生しました。
これは.dllの問題です。 OpenCV runtime.dllは、Vistaに同梱されなくなったsystem.dllを呼び出します。そのため、残念ながら、どのsystem.dllを見つけようとしているかを見つけるために、少し狩りをする必要があります。 (system.dllはvc2010またはVistaです)
このエラーは、.dllの誤ったインストール(つまり、ロールアウトされていない)によっても引き起こされます。
同じエラーに直面しても、後で修正しました...
_CONSOLE
が含まれているかどうかを確認してください。これによりエラーが発生していました。一部のアプリケーションでは、WIN32;_WINDOWS;_CONSOLE;_DEBUG;QT_DLL;QT_GUI_LIB;QT_NETWORK_LIB;QT_CORE_LIB;COIN_DLL;SOQT_DLL;QT_DEBUG;
を含める必要がありますCoin3Dアプリケーションで作業しているときにこのエラーが発生しました。
DLLがあるため、プログラムが見つからないか、見つかりません。
あなたの場合、openCV dllが欠落していると思います。これらは、オープンCVに付属の「build」ディレクトリの下にあります。 VS2010を使用してx86プログラムにビルドしている場合は、「opencv\build\x86\vc10\bin」の下にあるdllを見つけることができます。これらのファイルをすべてデバッグフォルダーとリリースフォルダーにコピーするだけで、問題が解決するはずです。
通常、次の手順を使用してこの問題を解決できます。
これらの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
幸運を!
そのような問題に出会いました。 Visual Studio 2008は明確に次のように述べています。問題はlibtiff.dllが原因でした。マニフェストが原因で何らかの理由でロードできません(実際、このDLLにはマニフェストがまったくありません)。プロジェクトからlibtiff.dllを削除したときに修正しました(同時に、圧縮されたTIFFを開くことができなくなりました!)。前述のdllを再コンパイルしましたが、まだ問題が残っています。興味深いことに、自分のマシンではそのようなエラーはありません。他の3人のコンプが私のプログラムの読み込みを拒否しました。注意!!!ここ http://www.error-repair-tools.com/ppc/error.php?t=0xc0150002 ある賢明な少年は、このエラーはレジストリの問題が原因であり、修復ツールを提供していると書いています。この「修復ツール」が悪意のあるソフトをコンプにインストールするという確信があります。
私たちの場合(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」が必要です。