对 cv::Mat::Mat() 的未定义引用
Undefined reference to cv::Mat::Mat()
我制作了一个简单的 C++ 代码来读取网络摄像头图像并显示它。但是,当我编译时,出现错误 - 'Undefined reference to cv::Mat::Mat()'。我不知道为什么它显示两个垫子。这是我的代码:
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
#include <stdlib.h>
int main() {
cv::VideoCapture cap(0);
if (!cap.isOpened){
std::cout << "Error opening camera" << std::endl;
}
cv::Mat img;
while(1){
cap >> img;
cv::imshow("output", img);
cv::waitKey(1);
}
}
我是这样编译的
g++ example.cpp `pkg-config --libs opencv4`
我不明白为什么会出现错误。感谢您的帮助!
这适用于我的 Linux:
g++ main.cpp -I/usr/include/opencv4/ -lopencv_core -lopencv_videoio -lopencv_highgui
虽然这不是可移植的,(使用 cmake
就可以了,但你需要先学习 cmake),我会提示你如何自己发现它。
每当您看到 Undefined reference to cv::Mat::Mat()
之类的错误时,请转到 https://docs.opencv.org/ , chose the newest version (here: https://docs.opencv.org/4.5.5/ 处的文档),在“搜索”window 中输入 class/function 的名称] linker 找不到(此处:Mat
),请阅读定义它的 header(此处:#include<opencv2/core/mat.hpp>
),然后丢失的库将具有名称 libopencv_core.*
或 libopencv_mat.*
。找到您机器中的任何一个(例如在 /user/lib
内)并 link 它,省略名称中的扩展名和开头 lib
。在我的例子中,带有完整路径的库位置是 /usr/lib/libopencv_core.so
,所以我 link 它是 -lopencv_core
。然后你需要用同样的方法找到剩余的库。
了解如何将其自动化,例如通过 Makefile
、CMakeLists.txt
或只是一个简单的 bash 脚本。
我制作了一个简单的 C++ 代码来读取网络摄像头图像并显示它。但是,当我编译时,出现错误 - 'Undefined reference to cv::Mat::Mat()'。我不知道为什么它显示两个垫子。这是我的代码:
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
#include <stdlib.h>
int main() {
cv::VideoCapture cap(0);
if (!cap.isOpened){
std::cout << "Error opening camera" << std::endl;
}
cv::Mat img;
while(1){
cap >> img;
cv::imshow("output", img);
cv::waitKey(1);
}
}
我是这样编译的
g++ example.cpp `pkg-config --libs opencv4`
我不明白为什么会出现错误。感谢您的帮助!
这适用于我的 Linux:
g++ main.cpp -I/usr/include/opencv4/ -lopencv_core -lopencv_videoio -lopencv_highgui
虽然这不是可移植的,(使用 cmake
就可以了,但你需要先学习 cmake),我会提示你如何自己发现它。
每当您看到 Undefined reference to cv::Mat::Mat()
之类的错误时,请转到 https://docs.opencv.org/ , chose the newest version (here: https://docs.opencv.org/4.5.5/ 处的文档),在“搜索”window 中输入 class/function 的名称] linker 找不到(此处:Mat
),请阅读定义它的 header(此处:#include<opencv2/core/mat.hpp>
),然后丢失的库将具有名称 libopencv_core.*
或 libopencv_mat.*
。找到您机器中的任何一个(例如在 /user/lib
内)并 link 它,省略名称中的扩展名和开头 lib
。在我的例子中,带有完整路径的库位置是 /usr/lib/libopencv_core.so
,所以我 link 它是 -lopencv_core
。然后你需要用同样的方法找到剩余的库。
了解如何将其自动化,例如通过 Makefile
、CMakeLists.txt
或只是一个简单的 bash 脚本。