LoginSignup
0
0

More than 5 years have passed since last update.

OpenCV(with VS2017)をReleaseモード実行したらhdf5.dllが見つからないと言われた問題について

Last updated at Posted at 2019-02-05

環境

  • Windows 10
  • OpenCV 4.0.1
  • Visual Studio 2017 Community
  • CMake 3.11.3

症状

OpenCV3.4とVisual Studio 2017で画像処理プログラムを組もうとしていたところ。
Debugモード(x64)ではビルド実行まで問題なく動くものの、Releaseモードにした途端に
ビルドは成功するものの、ランタイムエラーとなり以下のエラー文を出力された。
「hdf5.dllが見つからないため、コードの実行を続行できません。プログラムを再インストールすると、この問題が解決する可能性があります。」

考察 (結果だけ見たい人は飛ばしてください)

 hdf5.dllがない問題について、Releaseモードでソースをコンパイルしてリンカーでdllと結合する時にhdf5.dllがないと言われているので、じゃあ安直だがhdf5.dllを探して該当ファイル構造に組み込んでやればいいと思った。調べるとwindowsではregsvr32.exeを実行して.dllファイルを登録することが出来るらしい。hdf5.dllは以前に構築したpython環境下にあったので、コピペして登録してみたが、上手くいかなかった。どうやらこれは間違いのようだ。

 新しくVC++プロジェクトを再作成し、OpenCVを設定した後、自動出力されたHello, WorldプログラムにOpenCVをincludeしてRelease実行したところ、同様のエラーを吐いたので、恐らくソースコードに問題があるわけではなさそう。

 同じ問題に直面している人がいたので、リンクを貼っておく。
[2018-9-18. Getting the error : 'The code execution cannot proceed because hdf5.dll was not found' in Visual Studio 2015]
https://stackoverflow.com/questions/52387277/getting-the-error-the-code-execution-cannot-proceed-because-hdf5-dll-was-not

 リンク先コメント欄ではプロジェクト設定のビルドイベントにxcopyを入れろとの回答があったが、質問者はpython tool for visual studio 2015インストールしたらエラー吐かなくなったよ!と言っていた。なんだそりゃ。

 試しにVisual Studio Installerでpythonツールをインストールしてみたがやはり同様のエラーだった。しかしソースに問題はない(はず)ので、opencvのcmakeビルドからやり直してみることにした。最初のcmakeビルド構築手順から間違っているのではないかと予想した。というわけで以下を参考にpython環境も同時にビルドすることにした。
[2016-01-05 OpenCV3.1の導入with CMake]
https://yumetodo.hateblo.jp/entry/2016/01/05/161620

結果

 結論から言うと無事にRelease, Debugモードで実行することが出来ました。
 
 原因はVisual Studio側ではなく、OpenCVをCMakeでビルドする時にPython環境をまとめてビルドしてやる必要があったということ。c++版をビルドしているはずなのに何故python?という疑問がありましたが、OpenCVが裏で何をやってるのかは分からないので、詳しい方は感想や意見をコメントで残してくれると嬉しいです。 
 
 ただ、この記事を書いてる時点で既にOpenCV4.0.1がリリースされていたので、CMakeで最初からビルドし直すならもうOpenCV4に移行しようと思いまして、冒頭の3.4ではなく4でビルドしていますのでご注意ください。

 cmake_opencv4.0.1.png

 コメントや意見、質問などありましたらお願いします。役に立ったと思ったらいいね押しといてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0