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

时间:2014-12-10 13:19:04

标签: c++ eclipse opencv tesseract building

我正在使用带有MinGW的eclipse C ++的OpenCV 2.4.10。这个版本的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&)'

我也尝试过与Tesseract OCR引擎相同的功能,但它也显示了同样的问题,即对各种函数和类的未定义引用。我不知道在链接或构建文件时是否遗漏了一些东西。所以请帮忙。感谢

4 个答案:

答案 0 :(得分:1)

IMO Ashot的答案几乎是正确的,但我觉得你根本没有建立它们。如果是这样的话......

Build for MinGW,库有不同的链接到所有代码,你不能用不同的编译库编译

答案 1 :(得分:0)

你是如何构建代码的?如果编译器是GCC,则需要使用-l标志添加opencv库。

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

答案 2 :(得分:0)

&#34;这个版本的opencv只有visual C库,所以我在MinGW(eclipse)中链接了这些库。&#34;

不,这不行。

你不能使用prebuild visual studio,那些是针对不同的编译器。

你必须首先使用mingw获得cmake和构建 opencv库。

答案 3 :(得分:0)

通过首先使用CMake建立库然后在eclipse中使用它来实现它。