OPENCV链接错误 - Win32& VS2012

时间:2015-02-20 08:35:20

标签: c++ opencv visual-studio-2012

我已经构建了openCV 3.0.0 alpha& amp;测试版。但每次我运行我的项目时,我只会因为" imread"而得到此错误功能:

error LNK2019: unresolved external symbol "class cv::Mat __cdecl cv::imread(class cv::String const &,int)" (?imread@cv@@YA?AVMat@1@ABVString@1@H@Z) referenced in function _main    ...

这是我的代码:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <stdlib.h> 
#include <stdio.h>
using namespace cv;

int main()
{
    Mat a=Mat::zeros(10,10,0);
    Mat b;
    b=imread("Mu.jpg");
    imshow("s",a);
    waitKey(1000);

}

当我删除&#34; imread&#34;功能它工作正常。构建并运行没有错误并显示小黑图像(来自&#34; A&#34; Matrix) 我重新构建了解决方案&amp;从头开始OpenCV仍然出现此错误。

我正在与VS2012合作,我添加了包含&amp;项目属性表中的lib路径。 任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

imread函数已移至imgcodecs库,因此您必须将其包含在内:

对于MSVC用户: 添加&#34; opencv_imgcodecs300d.lib&#34;到&#34;配置属性 - &gt;链接器 - &gt;输入 - &gt;有条件的依赖关系&#34;并包括&#34; #include&#34;

对于Qt用户: 对于Qt IDE用户,将-lopencv_imgcodecs300d-lopencv_imgcodecs300添加到.pro文件 和#include <opencv2/imgcodecs/imgcodecs.hpp>到您的主文件

注意: 应更改lib名称中的数字300以匹配使用的OpenCV 版本。

答案 1 :(得分:0)

当编译器无法获得声明的那个函数的定义时,这个未解析的外部符号链接器错误基本上就会到来。

因此,请确保在代码中的某处定义了imread("Mu.jpg"){},然后尝试编译它。

检查您是否已正确链接库,如果您使用的是opencv2.2,link可能也很有用。