26

I'm trying to update my OpenCV version from 2.4.9 to the newest version, 3.10. I downloaded the Windows binary from here, having navigated there from the official OpenCV site. I then ran the installer, but the opencv\build\x64\vc12\lib directory only contained a couple files:

  • opencv_world310.lib
  • opencv_world310d.lib
  • OpenCVConfig.cmake
  • OpenCVModules.cmake
  • OpenCVModules-debug.cmake
  • OpenCVModules-release.cmake

In the past editions though, this directory used to contain the required libraries, like opencv_calib3d249d.lib, opencv_contrib249d.lib, opencv_core249d.lib, etc.

I imagine there's something I need to do with CMake, but I can't seem to figure it out--the old binaries used to compile everything for you. I also can't find anything in the documentation explaining this. Has anyone else come across this recently and have a solution?

herohuyongtao
  • 49,413
  • 29
  • 133
  • 174
marcman
  • 3,233
  • 4
  • 36
  • 71
  • 6
    opencv_world.lib contains all other modules (like core,highgui,etc) , just link to that single lib, and stop worrying – berak Jan 19 '16 at 01:59
  • 6
    Oh well that would make sense, thanks. Unless I'm really poor at searching, it seems strange that such a major change isn't broadcasted more obviously though. – marcman Jan 19 '16 at 02:02
  • So, what is the difference between opencv_world310.lib and opencv_world310d.lib? Is it related to debugging? Should I link to both of them? – r_laezza Feb 19 '18 at 13:14
  • 2
    @r_laezza: Link against `opencv_world310d.lib` in debug mode and link against `opencv_world310.lib` in release mode. If you compile the individual libraries, the same convention holds `opencv_*d.lib` is for debug, while `opencv_*.lib` is for release. – marcman Feb 20 '18 at 13:54

2 Answers2

28

By default, the binary version of OpenCV-3.x doesn't contain the separate libs like opencv_core.lib. Instead, these modules are integrated in opencv_world.lib, so you only need to link to it.

On the other hand, if you do want separate libs, i.e. uniform APIs with OpenCV-2.x, you can build it yourself using CMake by enable the libs that you want. Like

enter image description here

This will generate opencv_core.lib.

herohuyongtao
  • 49,413
  • 29
  • 133
  • 174
  • 3
    The advantage to this being you can keep your overall package size smaller by only including the OpenCV libs that you require. Not sure there is a lot of point in this day and age though... – GPPK Jan 19 '16 at 07:32
1

Or run cmake with -D BUILD_opencv_world=OFF key

banderlog013
  • 2,207
  • 24
  • 33