我在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