2013-07-16 115 views
3

我在mac 10.7.5上,使用xcode 4.6.2並使用OpenCV 2.4.3庫。我完成了在終端中使用cmake文件構建目錄並完成下載的過程。未找到庫OpenCV

我加入了.dylib文件在Xcode,改變了頭路,改變了C++庫與libstdC++,但是當我編譯我得到這個錯誤:

ld: library not found for -lopencv_calib3d.2.4.3 
clang: error: linker command failed with exit code 1 

libopencv_calib3d.2.4.3.dylib項目增加,所以我不想法還需要什麼。任何想法?

+0

你在開發的架構中有沒有類似「庫路徑」的東西? http://stackoverflow.com/questions/9412296/ld-library-path-the-shared-lib-path-in-linux你的編譯器是否接受像-L這樣的標誌作爲gcc/g ++? http://linux.die.net/man/1/g++ – Antonio

+0

感謝您的鏈接。我的架構是「Build Machine的本地架構」,我的編譯器是Default。如果我在其他C++標誌中添加-L,我會得到相同的錯誤。 -L不是我C++庫下的選項,但是我可以添加它並更改默認編譯器嗎?對不起,我是大多數這個新手。 –

+0

我不明白,但你必須使用'-L directory_where_your_library_is' – Antonio

回答

1

如果你的「make back-end」是Cmake,你應該堅持使用它。當cmake重新運行時(例如發生更改後),Xcode中的本地配置更改可能會「祕密」被覆蓋,從而產生奇怪的構建錯誤並迫使您記住所做的所有手動更改。

你的問題似乎是生成的項目似乎並不知道在哪裏尋找opencv。

假設你使用的MacPorts你應該添加一行說

link_directories(/opt/local/lib) 

您的CMakeLists.txt安裝的OpenCV。 (如果你使用BREW安裝,或編譯它手動只需更換/opt/local/lib/usr/local/lib或路徑到您的編譯庫)

還要確保對opencv_calib3d而不是opencv_calib3d.2.4.3鏈接(除非你有一個非常特別的原因繞過這個,但這通常意味着設置中的其他東西很奇怪:))

您可能已經知道的最終指針:因爲您已經在使用Cmake,所以應該添加庫以鏈接使用TARGET_LINK_LIBRARIES(...)在Cmake中而不是在Xcode中手動添加它們(指的是我之前的參數)。

+0

我不認爲OP使用cmake來構建他自己的程序。他只用cmake構建OpenCV – Antonio

+0

,我可以在哪裏添加link_directories?另外當我添加文件它說calib3d然後它添加它說calib3d.2.4.3 –

+1

@AndreaF對不起,我誤解了你的設置。因爲我現在得到它,所以你沒有使用make作爲你的實際項目,所以大多數我的觀點不適用。相反,看看這個解決方案:http://stackoverflow.com/questions/11726837/why-cant-i-compile-this-command-line-opencv-mac-application?rq=1 – kamjagin