9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OpenCV 3.4 + Visual Studio 2017でstaticlibを作る

Last updated at Posted at 2018-05-12

OpenCV2 で staticlibを作る方法はいろいろ書いてあったけど、OpenCV 3のstatic libを最近の環境で作る方法があまりなかったのでメモ。

OpenCVを静的リンクするためにはstatic libを使う必要があるけど、OpenCV 3.1 以降は公式が配布していないので、自前でビルドする必要がある。

公式のSourceをCMakeでビルドする。この時、BUILD_SHARED_LIBSのチェックをOFFにすれば、dllじゃなくて静的用のstaticlibが生成される。また、BUILD_opencv_worldを有効化して、まとまったlibを生成する。

静的リンクでopencv_worldを生成したら、サイズがとても大きくなるが、Cudaを無効化した状態で実際に生成されたサイズは86MBだったので、最近の富豪的なPCならば問題ないだろう。

ビルドが成功すると、installフォルダができる。
Visual StudioのVC++ディレクトリ設定で、インクルードディレクトリに「install\includes」、ライブラリディレクトリに「install\x64\vc15\staticlib」を、リンカの追加の依存ファイルにopencv_world341d.lib / opencv_world341.lib を指定する。

さて、コレで実行できるかと思ったら、
『LNK2001 外部シンボル ~~~ は未解決です。』エラーが起きる。

試行錯誤した結果、必要な追加の依存ファイルが足りなかった。
「install\x64\vc15\staticlib」に生成されたすべてのlibを登録する必要があった。(opencv_worldの意味…)
というわけで、「IlmImf.lib;ippicvmt.lib;ippiw.lib;ittnotify.lib;libjasper.lib;libjpeg.lib;libpng.lib;libprotobuf.lib;libtiff.lib;libwebp.lib;zlib.lib;opencv_world341.lib;」を追加して、無事、静的リンクができました!

9
6
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
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?