OpenCVのサンプルプログラムなどを動かそうとすると、下図のように
コンピュータにopencv_objdetect220d.dllがないため、プログラムを開始できません。
この問題を解決するには、プログラムを再インストールしてみて下さい。
などと、他にもコンピュータにopencv_core220d.dllがないため、・・・だったりと、ファイル名は違うかもしれませんが、このようなエラーメッセージが表示される場合があります。
dllファイルはコンピュータに入っているし、なぜ???と思われる方もいると思いますが、Windowsではダイナミックライブラリファイル(*.dll)は下記の特定のフォルダに入っていないと見つけてくれません。
1. アプリケーション(*.exe)と同じフォルダ
2. カレントディレクトリ
3. システムディレクトリ(C:\Windows\System32 など)
4. 16Bitシステムディレクトリ(C:\Windows\System など)
5. Windowsディレクトリ(C:\Windows など)
6. PATH環境変数に列挙されているディレクトリ
OpenCV2.2ではインストール時に、OpenCVをPATH環境変数に追加するか?と聞かれるのですが、これを忘れてしまうと、このエラーメッセージが表示されてします。
そのため、このエラーが出た時には自分でPATH環境変数にOpenCVのPATH(OpenCVのdllファイルのあるディレクトリ)を設定する必要があります。
設定方法は以下の通り。
設定方法は、スタートメニューから、コンピュータを右クリックし、プロパティを選択します。
次に表示されたウィンドウのシステムの詳細設定をクリック
詳細設定のタブを選択し、右下の環境変数のボタンをクリック
すると下図のように××のユーザー環境変数とシステム環境変数と2種類表示され、両方ともにPathの項目があるのですが、××のユーザー環境変数のPathを設定するとWindowsにログインしたときのユーザーのみでPathの設定が有効となり、システム環境変数のPathを設定すると全ユーザーでPathの設定が有効となります。
私は『ログインしたユーザーを変えるとプログラムが起動しないんだけど?!』とか言われたく無いので、システム環境変数のPathを設定 するようにしています。
そして、Pathの項目を選択し、編集ボタンをクリックします。
そして、編集値の欄に*.dllファイルがインストールされているパス(フォルダ名のフルパス)をセミコロン(;)に続けて記載します。
(例)
;C:\OpenCV2.2\bin
この時、元にあった文字は消さないように注意して下さい。
消されたプログラムが起動しなくなります。
最後にパソコンを再起動して下さい。
これで、 コンピュータに*.dllファイルがないため、 というエラーは無くなると思います。
(参考)
コメント
参考になりました、最近アドビのアンコールを立ち上げると、「CFHDDecoder64.dll
が無い」と表示され困っていました、参考にしてみます。
前田さん、コメント頂きありがとうございます。
アドビのような大規模なソフトではDLLファイルの関連が絡み合いまくっているので、そう簡単には直せない場合があります。
簡単にはCFHDDecoder64.dllのファイルがあるのであれば、exeファイルと同じフォルダにDLLファイルを入れてみるのも、いいと思いますが、それでダメなら再インストールした方がよいかもしれませんね。
ありがとうございます!本当に助かりました!
「dllがあるのに、なぜ」という6つのポイントがよくできていますね。おかげで、他の疑問も解きました。
ヨウさん、コメントありがとうございます。
DLLを使うには慣れないとエラーメッセージの意味が分かりづらいですよね。
結局は*.h,*.lib,*.dllの3点セットのファイルをどのように使えるようにすれば良いのか?がポイントなわけですが、OpenCVのセットアップを何回かやっていくうちに、他のライブラリを使うのも理解できるようになってくると思います。
頑張って下さい。