C++ 为什么我不能编译这个OpenCV';世界你好';使用g++;?
我已经通过自制为我的Mac OSX安装了OpenCV 我遇到的问题是根本无法使用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
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