openCV 243使用静态库错误LNK2019

问题描述:

我想在64位vs10控制台应用程序中使用openCV243静态库。我的操作系统是win7 64位。openCV 243使用静态库错误LNK2019

我已经包括以下库:

#pragma comment(lib,"../final_test/libs/staticlib/opencv_core243.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/opencv_highgui243.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/opencv_imgproc243.lib")  
#pragma comment(lib,"../final_test/libs/staticlib/opencv_video243d.lib")   
#pragma comment(lib,"../final_test/libs/staticlib/opencv_flann243.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/opencv_features2d243.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/opencv_objdetect243.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/opencv_core243.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/opencv_calib3d243.lib")  
#pragma comment(lib,"../final_test/libs/staticlib/opencv_legacy243.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/opencv_features2d243.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/opencv_ml243.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/libjpeg.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/libpng.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/libtiff.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/libjasper.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/zlib.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/IlmImf.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/opencv_videostab243") 
#pragma comment(lib,"../final_test/libs/staticlib/opencv_contrib243.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/opencv_nonfree243.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/opencv_photo243.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/opencv_stitching243.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/IlmImf.lib") 
#pragma comment(lib,"../final_test/libs/staticlib/opencv_ts243.lib") 

的运行时库:多线程(/ MT)

我获得以下链接错误。

1>opencv_highgui243.lib(cap_vfw.obj) : error LNK2019: unresolved external symbol AVIFileInit referenced in function "void __cdecl icvInitCapture_VFW(void)" ([email protected]@YAXXZ) 
1>opencv_highgui243.lib(cap_vfw.obj) : error LNK2019: unresolved external symbol AVIStreamGetFrameOpen referenced in function "public: virtual bool __cdecl CvCaptureAVI_VFW::open(char const *)" ([email protected][email protected]@[email protected]) 
1>opencv_highgui243.lib(cap_vfw.obj) : error LNK2019: unresolved external symbol AVIStreamInfoA referenced in function "public: virtual bool __cdecl CvCaptureAVI_VFW::open(char const *)" ([email protected][email protected]@[email protected]) 
1>opencv_highgui243.lib(cap_vfw.obj) : error LNK2019: unresolved external symbol AVIFileGetStream referenced in function "public: virtual bool __cdecl CvCaptureAVI_VFW::open(char const *)" ([email protected][email protected]@[email protected]) 
1>opencv_highgui243.lib(cap_vfw.obj) : error LNK2019: unresolved external symbol AVIFileOpenA referenced in function "public: virtual bool __cdecl CvCaptureAVI_VFW::open(char const *)" ([email protected][email protected]@[email protected]) 
1>opencv_highgui243.lib(cap_vfw.obj) : error LNK2019: unresolved external symbol AVIStreamGetFrame referenced in function "public: virtual bool __cdecl CvCaptureAVI_VFW::grabFrame(void)" ([email protected][email protected]@UEAA_NXZ) 
1>opencv_highgui243.lib(cap_vfw.obj) : error LNK2019: unresolved external symbol ICClose referenced in function "protected: void __cdecl CvCaptureCAM_VFW::closeHIC(void)" ([email protected][email protected]@IEAAXXZ) 
1>opencv_highgui243.lib(cap_vfw.obj) : error LNK2019: unresolved external symbol ICSendMessage referenced in function "protected: void __cdecl CvCaptureCAM_VFW::closeHIC(void)" ([email protected][email protected]@IEAAXXZ) 

...

谁能帮我摆脱这个问题?谢谢。

+0

当你不包含“highgui”lib时它会被编译吗? – Niko

+0

这可能也有帮助:http://*.com/questions/849238/how-can-i-resolve-error-lnk2019-unresolved-external-symbol – Niko

+0

感谢您的意见。 不幸的是,没有highgui项目不编译。 – user1043413

您需要链接MS vfw32.lib库。

+2

comctl32.lib也需要 –

+0

我可以得到更多的帮助,如何做到这一点? –

+0

@ChaiNadig可以通过furqan或VC++ 2010 Express:项目属性(Alt-F7) - >配置属性 - >链接器 - >输入来回答pragmas:点击附加依赖项的值下拉菜单,<编辑... >,粘贴上面的库文件列表。您将在单独的行上包含vfw32.lib和comctl32.lib,并从%OPENCV_DIR%\ build \ x86 \ vc10 \ staticlib获取库。 – sastanin

只是在你的头文件中做到这一点。它应该完美地工作。

#include "opencv2/opencv.hpp" 
#pragma comment(lib, "vfw32.lib") 
#pragma comment(lib, "comctl32.lib") 
+0

这是否也适用于64位? – tzippy

+0

是的,为什么不呢,它应该工作。 – furqan

+0

所以没有64位版本,我应该链接?或者这些文件在我的system32文件夹中自动为64位?我正在运行一个64位的Windows 7.我遇到的问题是,因为我编译为64位,'cv:VideoCapture :: readMat(CV_OUT Mat&image)'返回一个空的'cv :: Mat' – tzippy