【发布时间】: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