14

我在 Xcode 中链接 OpenCV 时遇到问题。我使用 brew 安装了 OpenCV:

brew tap homebrew/science
sudo brew install opencv

我开始了一个新的 Xcode 命令行项目,添加/usr/local/lib/usr/local/include库和标头搜索路径中。我还添加了pkg-config --libs opencvto的输出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 的编译方式和我的命令行参数之间到底有什么不同。

有谁知道这个错误的原因或知道我可以尝试调查这个问题吗?

4

4 回答 4

27

在 Xcode 中,在您的项目中创建一个新组,右键单击它,选择Add Files to Project,导航到该/usr/local/lib文件夹​​并添加以下基本库:

libopencv_core.dylib、libopencv_ml.dylib、libopencv_video.dylib

在以前版本的 OpenCV 中,库名称可能是:

libcxcore.dylib、libcvaux.dylib、libcv.dylib、libhighgui.dylib、libml.dylib

(根据您在 Mac 上安装 OpenCV 的方法,这些库可能位于另一个路径中。)

编辑:

如果您在 OP 解释的链接阶段包含动态库,则不需要上述行。

选择您的项目,转到Build Settings选项卡,按c++ standard library过滤,并将此参数设置为libstdc++ (GNU C++ standard library)

于 2013-04-18T09:13:31.997 回答
7

我已将 Build Settings -> c++ 标准库设置为Compiler Default。错误消失了。

于 2013-09-22T14:27:43.933 回答
1

我必须添加以下库(构建阶段 -> 将二进制文件与库链接),以便构建 OpenCV:

  • 加速
  • 资产库
  • AV基金会
  • 核心图形
  • 核心图像
  • 核心媒体
  • 核心视频
  • 石英芯
  • UIKit
  • 基础

参考:http ://docs.opencv.org/doc/tutorials/ios/video_processing/video_processing.html#opencviosvideoprocessing

于 2015-02-22T00:46:16.517 回答
0

对我来说,我在 iOS 的 xcode 中使用 opencv,我通过 pod install 而不是离线 opencv 框架使用 opencv 来解决错误。

您可以通过在下面添加 opencv pod 文本来尝试:

pod 'OpenCV', '2.4.9'
于 2016-07-04T12:15:14.587 回答