C++ openCV 243使用静态libs错误LNK2019

C++ openCV 243使用静态libs错误LNK2019,c++,opencv,static-linking,C++,Opencv,Static Linking,我试图在64位vs10控制台应用程序中使用openCV243静态库。我的操作系统是win7 64位 我已包括以下LIB: #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/stat

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

我已包括以下LIB:

#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)


有人能帮我解决这个问题吗?谢谢。

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

只需在您的头文件中执行此操作。它应该工作得很好

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

当您不包含“highgui”库时,它会编译吗?这可能也会有帮助:谢谢您的评论。不幸的是,如果没有highgui,项目将无法编译。好的,您是否也在项目配置中将这些lib文件指定为其他依赖项?这可能是必要的。此外,comctl32.lib是needed@ChaiNadig在furqan的回答中或者在VC++2010 Express中添加pragmas:项目属性(Alt-F7)->配置属性->链接器->输入;单击附加依赖项值上的下拉菜单,编辑…,将库文件列表粘贴到上面。您将在单独的行中使用vfw32.lib和comctl32.lib,还有来自%OPENCV\u DIR%\build\x86\vc10\staticlib的libs。因此,没有64位版本我更愿意链接?或者,这些文件是否自动64位保存在我的system32文件夹中?我正在运行64位的Windows7。我遇到的问题是,由于我是64位编译的,
cv:VideoCapture::readMat(cv\u OUT Mat&image)
返回一个空的
cv::Mat
您应该在cmake文件或类似文件中定义依赖项。链接pragma一开始是一个糟糕的概念。为什么要在编译期间定义链接时间依赖关系?它们也是特定于编译器的,不可移植。这些库的名称中当然有32位,因为它们是win32名称的一部分,而不是因为它们必须是32位库。注:我遇到了同样缺少符号的问题,在我的例子中,我添加了两个win32库和两个库列表,以链接到我的conan opencv包中。