2012-02-09 93 views
0

我是Opencv的初學者。最近我遇到了關於cvSmooth的問題。當我試圖用Xcode中進行編譯,編譯器給了我一個錯誤說, 未定義的符號: 「_cvSmooth」,從引用:在main.o中 LD _main:符號(S)沒有發現 collect2:LD返回1退出狀態未定義的符號,在mac上的opencv2.3.1中的cvSmooth

有誰知道是什麼原因導致此問題?謝謝!

+0

首先,嘗試通過命令行來編譯源代碼:'克++ demo.cpp -o演示\'PKG -config --cflags --libs opencv \''如果你的系統上安裝了正確的OpenCV,這應該可以工作。如果它成功編譯,這意味着它只是一個環境問題,你需要遵循@SSteve所說的。 – karlphillip 2012-02-10 00:52:28

+0

因爲你剛剛開始使用opencv,也許嘗試避免一般(cv *函數,IplImages等)在5年前轉移到C++的過時的c-api,所以你應該... – berak 2014-02-17 09:17:12

回答

0

當您不將OpenCV庫鏈接到您編譯的程序時會發生這種情況。嘗試在OpenCV Wiki上的Xcode項目中使用OpenCV的指示信息,看看是否有幫助。

0

前幾天我得到了完全相同的問題。但現在已經修復了。

基本上,你需要檢查三件事情。 1.您是否正確設置了搜索路徑? 在您的項目「建立設置」標籤上,您需要將標題搜索路徑和庫搜索路徑設置爲標題和庫的目錄。我用MacPort安裝OpenCV的2.4,所以路徑是/ opt /本地/包括&的/ opt/local/lib目錄

  1. 你有手動添加庫? 在Building Phase - > Link Binary with Library標記下,您需要添加需要使用的opencv dylib到這個地方。

  2. 你選擇了GCC編譯器嗎? Xcode中的默認編譯器是Apple LLVM編譯器,它使用C++ 11標準。由於opencv 2.4與此標準不兼容,因此您需要將編譯器切換到GCC。您可以建設下更改設置標籤

希望我的經驗可以幫助您解決問題;)

2

的OpenCV編譯了一些庫。如果你像我一樣從OpenCV教程開始(我正在使用O'Reilly的書),你添加了libopencv_core.dyliblibopencv_highgui.dylib,這些工作一直持續到使用cvSmooth函數。

鏈接器錯誤(未定義符號)代碼爲「您沒有鏈接到所有必需的庫,因此我找不到您要求的例程。」他們可以很容易找到與nm命令,有時你可以通過提供你認爲它可能是在圖書館幫助搜索:

[email protected]:/usr/local/lib [master] 
$ nm libopencv_imgproc*|grep cvSmooth 
0000000000132a60 T _cvSmooth 
0000000000132a60 T _cvSmooth 
0000000000132a60 T _cvSmooth 

添加libopencv_imgproc.dylib到您的Xcode項目,你應該去比賽。

PS:_cvSmooth示出,因爲相對於母庫中的軟鏈接的3倍:

$ ls -l libopencv_img* 
-rwxr-xr-x 1 root admin 2063132 Feb 16 17:48 libopencv_imgproc.2.4.8.dylib* 
lrwxr-xr-x 1 root admin  29 Feb 16 17:48 [email protected] -> libopencv_imgproc.2.4.8.dylib 
lrwxr-xr-x 1 root admin  27 Feb 16 17:48 [email protected] -> libopencv_imgproc.2.4.dylib