openCV 243使用静态库错误LNK2019

时间:2012-11-20 11:33:29

标签: c++ opencv static-linking

我正在尝试在64位vs10控制台应用程序中使用openCV243静态库。我的操作系统是win7 64位。

我已经包含了以下的库:

#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)" (?icvInitCapture_VFW@@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 *)" (?open@CvCaptureAVI_VFW@@UEAA_NPEBD@Z)
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 *)" (?open@CvCaptureAVI_VFW@@UEAA_NPEBD@Z)
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 *)" (?open@CvCaptureAVI_VFW@@UEAA_NPEBD@Z)
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 *)" (?open@CvCaptureAVI_VFW@@UEAA_NPEBD@Z)
1>opencv_highgui243.lib(cap_vfw.obj) : error LNK2019: unresolved external symbol AVIStreamGetFrame referenced in function "public: virtual bool __cdecl CvCaptureAVI_VFW::grabFrame(void)" (?grabFrame@CvCaptureAVI_VFW@@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)" (?closeHIC@CvCaptureCAM_VFW@@IEAAXXZ)
1>opencv_highgui243.lib(cap_vfw.obj) : error LNK2019: unresolved external symbol ICSendMessage referenced in function "protected: void __cdecl CvCaptureCAM_VFW::closeHIC(void)" (?closeHIC@CvCaptureCAM_VFW@@IEAAXXZ)

...

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

2 个答案:

答案 0 :(得分:14)

您需要与MS vfw32.lib库链接。

答案 1 :(得分:5)

只需在头文件中执行此操作即可。它应该完美无缺。

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