每个openCV 3.1.0库的三个实例

时间:2016-09-21 22:41:05

标签: c++ opencv

我可以按照此处的说明(http://charliegerard.github.io/blog/Installing-OpenCV/)安装和构建openCV。但是在成功创建了我在lib目录中注意到的动态库之后,有3个每个库的实例,其格式如下:

libopencv_LibName.3.1.0.dylib

libopencv_LibName.3.1.dylib

libopencv_LibName.dylib

Screenshot of the libraries

我的下一步是仅挑出我的项目所需的头文件和库,并且我不确定我是否真的需要使用每个库的所有3个实例。为什么make会创建所有这些额外内容?我需要哪些?

其他信息:

操作系统:OSX El Capitan

IDE:Xcode 7.3.1

1 个答案:

答案 0 :(得分:0)

构建opencv库时,它会创建实际的* .dylib二进制文件(libopencv_LibName.3.1.0.dylib),其中包含版本,主要版本和次要版本。 (Release = 3,Major = 1,Minor = 0)。这允许您具有链接到特定版本库的动态样式。 (例如,opencv在发行版本之间通常不完全兼容。(从2.x.x到3.x.x),但它通常在主要/次要版本之间兼容。(3.0.x到3.1.x))

通过链接到3.1.0版本,您将锁定要求特定版本的库。 (如果更新opencv,它仍将使用openCV 3.1.0。)

但是,如果您链​​接到3.1版本,它只关心Release和Major版本,但会允许次要版本更新。 (目前3.1是3.1.0的符号链接,但如果您安装了3.1.1,它现在将引用3.1.1库。)我通常发现最好链接到这个,因为它将允许您更新bug修复,但不会破坏任何功能。

最后还有无版本的符号链接,这个符号链接总是会引用你安装的最新版本的opencv。目前它引用3.1.0,但是如果你安装了3.1.1,它现在将引用3.1.1。这不会是坏事,但如果您要安装4.0.0,它现在将引用此二进制文件并可能会破坏某些API。