Introduction

Windows上でOpenCVのstaticライブラリを作成し、自作のdllにリンクさせる方法。

普通にリンクさせると、

opencv_world341.lib(alloc.cpp.obj) : error LNK2038: ‘RuntimeLibrary’ の不一致が検出されました。値 ‘MT_StaticRelease’ が MD_DynamicRelease の値 ‘opencv.obj’ と一致しません。

と表示されてしまう。
一工夫必要。

How to?

CMakeに渡す引数に下記を追加。特に、BUILD_WITH_STATIC_CRTが重要。

  • BUILD_SHARED_LIBS=OFF
  • BUILD_WITH_STATIC_CRT=OFF

OpenCVのビルドとサンプルdllをビルドできるサンプルは下記。

下記のように簡単に使用可能。

1
2
$ BuildOpenCV.bat Release D:\Works\Lib\OpenCV\3.4.1\sources
$ Build.bat Release