C++ 为什么我不能编译这个OpenCV';世界你好';使用g++;?

C++ 为什么我不能编译这个OpenCV';世界你好';使用g++;?,c++,opencv,compilation,linker,homebrew,C++,Opencv,Compilation,Linker,Homebrew,我已经通过自制为我的Mac OSX安装了OpenCV 我遇到的问题是根本无法使用imreadopenCV命令。当我这样做时,我会得到一个错误。下面是我所做工作的细目 我的简单代码是: #include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> using namespace std; using namespace cv; int m

我已经通过自制为我的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;
}
执行此操作后,我收到的错误消息是:

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
架构x86_64的未定义符号: “cv::imread(std::basic_string const&,int)”,引用自: _ccvT5f6R.o中的主管道 ld:找不到架构x86_64的符号 collect2:错误:ld返回了1个退出状态 所以。。。我不知道这里发生了什么事。如果我只是取消对
imread
行的注释,文件就可以编译了。但是,当取消注释时,它无法识别该命令


这是怎么回事

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


需要“-lopencv_imgproc”的LDFLAG。

g++
正试图链接到OpenCV库的
x86_64
版本,而这显然是您所缺乏的。@WilliamAndrewMontgomery。如果我使用openCV除了“imread”之外的其他函数,我就不会有问题。事实上,如果我使用cmake而不是g++进行编译,代码就可以运行了。因此,我正试图找出如何通过g++……
cmake
来实现它,cmake不是一个编译器,它可能在后台使用
g++
。你能看一看由
cmake
生成的命令行吗?@WilliamAndrewMontgomery很高兴,但不知道怎么做。。。我基本上遵循了本教程。只需运行
makeverbose=1
并查找运行的命令
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