【发布时间】:2021-11-12 08:52:19
【问题描述】:
我是 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 <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.
这意味着找不到文件
我检查了其他类似的问题,如this one,但我已经在做,但没有成功
我想过把“opencv2”文件夹直接扔到“include”文件夹中,但是好像不对,如何正确编译这段代码?
【问题讨论】:
-
您没有将
lib文件正确添加到您的项目配置中 -
您必须包含标题和库链接。
-
第一个版本的includes是对的,但是需要链接库。