"undefined reference" 和包括在C++中使用 OpenCV 时找不到的内容



我是c++新手,需要一些库方面的帮助

是这样的

这个简单的代码:

#include <opencv2/objdetect.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/videoio.hpp>
#include <iostream>
int main() {
cv::CascadeClassifier eye_detection;
return 1;
}

与编译

g++ main.cpp -I/usr/include/opencv4

返回我

/usr/bin/ld: /tmp/ccOsUApG.o: na função "main":
main.cpp:(.text+0x20): referência não definida para "cv::CascadeClassifier::CascadeClassifier()"
/usr/bin/ld: main.cpp:(.text+0x31): referência não definida para "cv::CascadeClassifier::~CascadeClassifier()"
collect2: error: ld returned 1 exit status

翻译过来就是"未定义的引用">


我也试着改变我写"include"的方式

#include <opencv4/opencv2/objdetect.hpp>
#include <opencv4/opencv2/highgui.hpp>
#include <opencv4/opencv2/imgproc.hpp>
#include <opencv4/opencv2/videoio.hpp>
#include <iostream>
int main() {
cv::CascadeClassifier eye_detection;
return 1;
}

编译
g++ main.cpp

In file included from main.cpp:1:
/usr/include/opencv4/opencv2/objdetect.hpp:47:10: fatal error: opencv2/core.hpp: Arquivo ou diretório inexistente
47 | #include "opencv2/core.hpp"
|          ^~~~~~~~~~~~~~~~~~
compilation terminated.

转换成文件未找到


我检查了其他类似的问题,但我已经做了,没有成功

我想把"opencv2"文件夹放入"include"文件夹,但这似乎不正确,我怎么能编译这段代码的正确方式?

最后我弄明白了,我创建了CMakeList文件作为库网站说,仍然没有工作,所以我决定从我的系统的包管理器卸载我的包,并安装它手动下载代码和编译它与cmake,它现在确实工作了,即使我什么也没改变(它可能只是改变了文件夹,我不能指向它之前)

简而言之,cpp比我想象的要复杂得多,从现在开始我会检查更多关于make和cmake文件的信息

最新更新