2016-09-21 125 views
0

我能夠按照這裏的說明安裝和構建openCV(http://charliegerard.github.io/blog/Installing-OpenCV/)。但是,成功創建我lib目錄中發現的動態庫有每個庫中按以下格式命名的3個實例:每個openCV 3.1.0庫的三個實例

libopencv_LibName.3.1.0.dylib

libopencv_LibName.3.1.dylib

libopencv_LibName.dylib

Screenshot of the libraries

我的下一步就是要挑出只有頭文件和庫我需要我的項目,而且我不確定是否真的需要使用每個庫的所有3個實例。爲什麼要製作所有這些附加內容?我需要哪些?

附加信息:

OS:OSX埃爾卡皮坦

IDE:Xcode的7.3.1

+0

我猜測除* 3.1.0.dylib之外的所有文件都是符號鏈接。否則,這些文件應該是二進制相同的。是真的嗎? –

+0

如何檢查它們是否是二進制相同的?我試着用文本編輯器打開它,但它大部分都是一堆問號。 @RobertPrévost – Gela

+0

你可以使用'diff'。 –

回答

0

當你建立了創建實際的OpenCV庫*名爲.dylib二進制(libopencv_LibName.3.1 .0.dylib)包含版本,主版本和次版本。 (Release = 3,Major = 1,Minor = 0)。這允許你有一個動態鏈接到特定版本的庫的風格。 (例如,opencv在發行版本之間通常不是完全兼容的(從2.xx到3.xx),然而它經常在主要/次要版本之間兼容(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。

+0

澄清,這是否意味着這些圖書館彼此獨立,我不需要所有3? – Gela

+0

@Gela:是的,它們是同一個文件的符號鏈接或快捷方式。你注意到的箭頭告訴你。另外,如果您使用opencv_world構建opencv,您也將擁有lib_opencv_world.3.1.0.dylib。這個庫包含了一切(libcore,libimgproc,libcallib等)。 – saurabheights

+0

謝謝。我在Windows上使用了預構建的二進制文件,並在那裏使用了opencv_world300.lib,但由於Mac沒有預編譯的二進制文件,因此我必須自己構建源文件,並以單獨的庫結束。你知道我如何在Mac上獲得相同的opencv_world庫嗎?這對我來說實際上是理想的解決方案,因爲我正在多個平臺上構建相同的確切項目。 @saurabheights – Gela