我是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文件的信息