我有一个我一直在 ubuntu 12.04 下开发的 opencv 项目,在具有 x86_64 架构的 mac 上的 parellels VM 上。我认为有许多屏幕切换性能问题是由于 VM 造成的,其中 linux 视频模式会翻转几秒钟,而摄像头访问是由 opencv 应用程序进行的。我决定把项目移到电脑mac端的Xcode中继续opencv开发。但是,我对 xcode 不太熟悉,并且无法让项目在那里正确构建。
我已经安装了 xcode。我在 mac 上下载并解压缩了最新版本的 opencv,然后运行:~/src/opencv/build/cmake-gui -G Xcode .. 根据来自 willowgarage 和其他各种位置的说明。这似乎工作正常(但是我现在想知道我是否在这里缺少架构设置,尽管它在 Xcode 中是 64 位英特尔)。然后,我使用 linux 项目中的源文件设置了一个 xcode 项目,并将包含目录更改为使用 /opt/local/include/... 而不是 /usr/local/include/... 我将 xcode 切换为使用项目构建设置中的 LLVM GCC 编译器然后将 Apple LLVM Dialog for C++ 设置为 Language Dialect 为 GNU++11(这似乎与上面的行不一致)
我没有在 xcode 中使用 makefile,(我知道 - 它有自己的项目文件......)
我还遇到了一个链接器问题,看起来可以通过添加此链接器标志来解决它们:
-lopencv_video
基于此处类似的帖子:other thread 然而,在这种情况下,该人在他们的项目中使用了 Makefile。
我尝试在 xcode 构建设置中的“其他链接器标志”下添加此链接器标志,但仍然出现构建错误。
我想我在这里可能有两个问题,一个是使用 Cmake 构建 opencv 库时的架构设置,另一个是我的项目中的链接器标志设置。
目前构建错误列表如下所示:
Undefined symbols for architecture x86_64:
"cv::_InputArray::_InputArray(cv::Mat const&)", referenced from:
_main in main.o
"cv::_OutputArray::_OutputArray(cv::Mat&)", referenced from:
_main in main.o
"cv::Mat::deallocate()", referenced from:
cv::Mat::release() in main.o
"cv::Mat::copySize(cv::Mat const&)", referenced from:
cv::Mat::Mat(cv::Mat const&)in main.o
cv::Mat::operator=(cv::Mat const&)in main.o
"cv::Mat::Mat(_IplImage const*, bool)", referenced from:
_main in main.o
"cv::imread(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)", referenced from:
_main in main.o
---SNIP---
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
任何人都可以就下一步尝试提供一些指导吗?
谢谢,沃尔特