LNK2019:Visual Studio C ++中未解决的外部符号错误

时间:2013-07-21 07:16:12

标签: visual-studio-2010 opencv

这是我在Visual Studio C ++中的代码

#include "stdafx.h"
#include<opencv\cv.h>
#include<opencv\highgui.h>

using namespace cv;

int main(int argc, char** argv[]) {
  IplImage* img = cvLoadImage("logo.jpg");
  cvNamedWindow("Test", CV_WINDOW_AUTOSIZE);
  cvShowImage("Test", img);
  cvWaitKey(0);
  cvReleaseImage(&img);
  cvDestroyWindow("Test");
  return 0;
}

我正在使用OpenCV 2.4.6和Visual Studio 2010.这是错误:

openCV_testing.obj : error LNK2019: unresolved external symbol _cvDestroyWindow
referenced in function _main
openCV_testing.obj : error LNK2019: unresolved external symbol _cvReleaseImage     
referenced in function _main
openCV_testing.obj : error LNK2019: unresolved external symbol _cvWaitKey referenced in  
function _main
openCV_testing.obj : error LNK2019: unresolved external symbol _cvShowImage referenced   
in function _main
openCV_testing.obj : error LNK2019: unresolved external symbol _cvNamedWindow    
referenced in function _main
openCV_testing.obj : error LNK2019: unresolved external symbol _cvLoadImage referenced 
in function _main

请帮忙。

5 个答案:

答案 0 :(得分:14)

'未解析的外部符号'表示您没有链接到所需的库。 转到properties-&gt; linker-&gt;其他库依赖项并添加opencv库的路径。

答案 1 :(得分:10)

首先检查 How to build applications with OpenCV inside the Microsoft Visual Studio

如果您仍然遇到同样的问题,可能会遇到下列情况之一。

  1. 您的活动解决方案平台是x86,但您正在尝试链接x64 OpenCV库。
  2. 您的活动解决方案平台是X64,但您正在尝试链接x86 OpenCV库。
  3. 如果您遇到其中一种情况,请检查 Compiling a 64-bit Application in Microsoft Visual Studio Express 2010

答案 2 :(得分:6)

将这些添加到您的代码中:

#pragma comment (lib, "opencv_core248d.lib")
#pragma comment (lib, "opencv_highgui248d.lib")
#pragma comment (lib, "opencv_imgproc248d.lib")
#pragma comment (lib, "opencv_video248d.lib")
#pragma comment (lib, "opencv_features2d248d.lib")

它对我有用。

答案 3 :(得分:0)

我搜索了很多相同的问题,这是我找到的最好的解决方案,它对我有用。

打开配置属性&gt; C / C ++&gt;常规,并编辑字段附加包含目录以添加这3个路径(对于标题):

C:\ OpenCV2.3 \构建\包括\ OpenCV的

C:\ OpenCV2.3 \构建\包括\ opencv2

C:\ OpenCV2.3 \构建\包括

答案 4 :(得分:0)

我知道这与 OpenCV 库无关,但我在导入 Tiny-Process 库时遇到了问题。我的 .lib 文件已在 Configuration Properties -> Linker -> Additional Library dependencies 中正确链接,并且附加包含目录已正确添加,但仍未找到函数定义,并且我收到了 LNK2019 错误。

要解决此问题,我必须进入库项目属性,更改 Configuration Properties -> Advanced Character Set 中的字符集属性并将值 Use Multi-Byte Character Set 更改为 Use Unicode Character Set

重新编译库并使用新的 .lib 文件后,它可以工作了。