错误LNK2019:函数“void __cdecl example2_4(struct _IplImage *)”中引用了未解析的外部符号 cvSmooth

error LNK2019: unresolved external symbol cvSmooth referenced in function "void __cdecl example2_4(struct _IplImage *)"

提问人:Sepideh Abadpour 提问时间:7/7/2013 最后编辑:Sepideh Abadpour 更新时间:7/8/2013 访问量:3709

问:

我希望任何熟悉openCV和图像处理的人都能尽快帮助我。
我对 openCV 和 VC++ 绝对陌生,这是本周第三次遇到错误 LNK2019。
我知道这个错误意味着包含指定函数的 .lib 文件尚未链接到项目,并且其相应的头文件未包含在代码顶部。
但是这次基于这个网页,我收集到cvSmooth是包含的功能,所以我添加了这个.lib作为,并写了这一行
opencv_imgproc243d.libAdditional Dependencies

#include "opencv2\imgproc\imgproc.hpp"  

在我的代码顶部,但错误

error LNK2019: unresolved external symbol cvSmooth referenced in function "void __cdecl example2_4(struct _IplImage *)"  

不会改变,保持不变。
我真的很困惑????
任何帮助将不胜感激,如果需要,请告诉我将代码作为编辑部分添加到我的问题中。
它是错误的并且属于另一个 .lib 文件吗?
cvSmooth


根据 h3now 的建议编辑了我问题的部分

我的代码如下:

#include "stdafx.h"  
#include "opencv\cv.h"  
#include "opencv\highgui.h"  
#include "opencv2\core\core.hpp"  
#include "opencv2\imgproc\imgproc.hpp"  

void example2_4( IplImage* image )  
{
   // Create some windows to show the input  
   // and output images in.  
   //  
   cvNamedWindow( "Example4-in",CV_WINDOW_AUTOSIZE );  
   cvNamedWindow( "Example4-out",CV_WINDOW_AUTOSIZE );  
   // Create a window to show our input image  
   //  
   cvShowImage( "Example4-in", image );  
   // Create an image to hold the smoothed output  
   //  
   IplImage* out = cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,3);  
   // Do the smoothing  
   //  
   // Do the smoothing  
   //  
   cvSmooth( image, out, CV_GAUSSIAN, 3, 3 );  
   // Show the smoothed image in the output window  
   //  
   cvShowImage( "Example4-out", out );  
   // Be tidy  
   //  
   cvReleaseImage( &out );  
   // Wait for the user to hit a key, then clean up the windows  
   //
   cvWaitKey( 0 );
   cvDestroyWindow( "Example4-in" );  
   cvDestroyWindow( "Example4-out" );  
}  




int main(int argc,  char* argv[])  
{  
    IplImage* img = cvLoadImage(argv[1]);
    example2_4( img );
    cvReleaseImage( &img );  
    system("pause");  
    return 0;  
}  

例如,当我右键单击函数 cvCreateImage 并选择 Go To Definition 时,会打开一个名为 core_c.h 的文件。因此,请理解此函数的原型包含在 core_c.h 中。
因此,出于这个原因,我们理解我们应该在代码顶部编写 #include“opencv2\core\core.hpp”#include“opencv2\core\core_c.h”(我认为使用这两个代码中的任何一个都没有区别),并将 opency_core243d.lib 链接到项目以使用函数 cvCreateImage
但是当我右键单击 cvSmooth 并选择 Go To Definition 时, 什么也没发生
@h3now建议的解决方案是否适用于所有功能?
因为当我也右键单击cvShowImage时,什么也没发生。

C++ visual-studio-2010 opencv lnk2019 未解析外部

评论

0赞 Ander Biguri 7/7/2013
有时,此库包含其他一些库。只要确保你没有错过核心库或其他一些。

答:

0赞 JLagana 7/8/2013 #1

我遇到了同样的错误。我使用的是 opencv 2.2 而不是 2.4.3,但解决方案应该是等效的。

发现需要包含的文件的一个好方法是(在Visual Studio中)右键单击代码中的函数名称,然后选择“转到定义”。通过这样做,我意识到我应该包含头文件,而不是 .imgproc_c.himgproc.hpp

评论

0赞 Sepideh Abadpour 7/8/2013
感谢您的关注,但看看我真正遇到的问题。Edited section of my question based on h3now's suggestion