使用 openCV 时对各种函数的未定义引用

Undefined reference to various functions while using opencv

本文关键字:函数 未定义 引用 openCV 使用      更新时间:2023-10-16

我正在使用带有日食C++的OpenCV 2.4.10与MinGW一起使用。这个版本的opencv只有Visual C的库,所以我在MinGW(eclipse)中链接了这些库。我尝试运行一个简单的代码来加载和显示图像:

#include<iostream>
#include<cv.h>
#include<highgui.h>
using namespace std;
using namespace cv;
int main(){
  Mat image = imread("D:/photo1.tif",1);
  namedWindow( "Display", WINDOW_AUTOSIZE );
  imshow( "Display", image );
return 0;
}

但是在构建时,它会显示以下错误:

undefined reference to `cv::imread(std::string const&, int)'
undefined reference to `cv::namedWindow(std::string const&, int)'
undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)'

我也尝试了同样的方法,但在那里它也显示了同样的问题,即对各种函数和类的未定义引用。我不知道我在链接或构建文件时是否缺少某些内容。所以请帮忙。谢谢

IMO Ashot的回答几乎是正确的,但我有一种感觉,你根本没有建造它们。如果是这样的话..

为 MinGW 构建,库对所有代码都有不同的链接,你不能使用不同的编译库进行编译

你是如何构建代码的?如果编译器是GCC,那么你需要添加带有-l标志的opencv库。

您可以使用命令 - pkg-config opencv --libs(在 Linux 中)找到 opencv libs。

"这个版本的opencv只有Visual C的库,所以我在MinGW(eclipse)中链接了这些库。

,这是行不通的。

你不能使用预构建的Visual Studio,这些是针对其他编译器的。

你必须先获得 CMAKE 并使用 Mingw 构建 OpenCV 库。

通过首先使用 CMake 构建库,然后在 eclipse 中使用它来让它工作。