【问题标题】:Why cant I compile this OpenCV 'hello world' using g++?为什么我不能使用 g++ 编译这个 OpenCV 'hello world'?
【发布时间】:2014-08-05 16:31:03
【问题描述】:

我已经通过自制软件为我的 Mac OSX 安装了 OpenCV。

我遇到的问题是我根本无法使用imread openCV 命令。当我这样做时,我得到一个错误。以下是我所做工作的细分。

我的简单代码是:

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace std;
using namespace cv;

int main()
{

    Mat imageMe = imread("frog.jpg", 0);
    return 0;
}

要编译,我在命令提示符中输入:

  g++ opencvEntry.cpp -o opencvEntry `pkg-config --cflags --libs opencv` && ./opencvEntry

执行此操作后,我收到的错误消息是:

Undefined symbols for architecture x86_64:
      "cv::imread(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)", referenced from:
          _main in ccvT5f6R.o
    ld: symbol(s) not found for architecture x86_64
    collect2: error: ld returned 1 exit status

所以...我不确定这里发生了什么/发生了什么。如果我只是取消注释 imread 行,文件编译得很好。但是,当取消注释时,它无法识别该命令。

这里发生了什么?

【问题讨论】:

  • g++ 正在尝试链接到 OpenCV 库的 x86_64 版本,这显然是您缺少的。
  • @WilliamAndrewMontgomery 事情是这样的。如果我使用除了“imread”之外的openCV的其他功能,我没有问题。事实上,如果我使用 cmake 而不是 g++ 进行编译,代码就可以工作。所以我想弄清楚如何让它通过 g++ 工作......
  • cmake 不是编译器,它可能在后台使用g++。可以看看cmake生成的命令行吗?
  • @WilliamAndrewMontgomery 很高兴,但不知道该怎么做...我基本上遵循了本教程here
  • 只需运行make VERBOSE=1 并查找运行的命令

标签: c++ opencv compilation linker homebrew


【解决方案1】:

我也有同样的问题,经过搜索,这是一个适合我的解决方案,希望对你也有帮助。

Compiling OpenCV code on a 64-bit mac

需要“-lopencv_imgproc”的LDFLAG。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    相关资源
    最近更新 更多