我在Xcode中鏈接OpenCV時遇到問題。 我安裝的OpenCV採用BREW:在Xcode中連接OpenCV時體系結構x86_64錯誤的未定義符號
brew tap homebrew/science
sudo brew install opencv
我開始了一個新的Xcode命令行項目,添加/usr/local/lib
和/usr/local/include
到庫和頭搜索路徑。 我還將pkg-config --libs opencv
的輸出添加到other linker options
。
但是,當我嘗試編譯這個小樣本程序:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
int main(int argc, char *argv[])
{
cv::Mat test;
cv::namedWindow("Display window", CV_WINDOW_AUTOSIZE);// Create a window for display.
cv::waitKey(0); // Wait for a keystroke in the window
return 0;
}
我得到下面的連接錯誤:
Undefined symbols for architecture x86_64:
"cv::namedWindow(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
但是我能夠編譯使用
在命令行程序g++ `pkg-config --cflags --libs opencv` prog.cpp
所以我認爲問題是Xcode的設置方式。但是我無法確定Xcode編譯和我的命令行參數之間究竟有什麼不同。
有沒有人知道這個錯誤的原因或有一個想法,我可以嘗試調查問題?
這將產生同樣的錯誤。我的圖書館被命名稍有不同。 'libopencv_core.dylib'但我不認爲這是一個問題。另外,它應該有什麼區別我如何添加它們?使用「其他鏈接器選項」,我嘗試儘可能地重新創建我的命令行版本。有沒有一些方法來檢查xcode是否實際使用這些庫進行鏈接? – sietschie
@sietschie看到我編輯的答案,我已經添加了另一個可能導致此問題的Xcode設置。 –
使用'libstdC++'解決了我的問題。 – sietschie