使用Qt插件的Visual Studio连接OpenCV

3

我尝试将OpenCV库集成到基于Qt的Visual Studio 2012项目中。我知道有很多其他线程解决了这个问题,但没有一个解决了我的链接问题。

  • Windiws 8.1 64位
  • Visual Studio 2012 32位
  • OpenCV 3.0
  • Qt 5.1 32位和Qt Add-In 1.2.3

我下载了OpenCV 3.0 Windows包,并使用CMake和Visual Studio编译器进行构建;我按照这个指示进行操作。生成的构建文件夹如下所示:。.lib和.dll文件已正确生成: enter image description here 然后我按照官方OpenCV页面和这个页面的说明进行了以下配置:

  • VC++目录 ‣ "可执行文件目录":我添加了第三张图片中显示的bin文件夹的路径
  • VC++目录 ‣ "库目录":我添加了第二张图片中显示的lib文件夹的路径
  • C/C++ ‣ 常规 ‣ "附加包含目录":在这里,我添加了提取的OpenCV软件包原始include文件夹的路径,因为生成include文件夹为空
  • 链接器 ‣ 常规 ‣ "附加库目录":在这里,我添加了lib文件的路径
  • 链接器 ‣ 输入 ‣ "附加依赖项":在这里,我列出了所有库,如下所示:
    opencv_core300d.lib
    opencv_highgui300d.lib
    opencv_imgproc300d.lib
    opencv_video300d.lib
    opencv_calib3d300d.lib
    opencv_contrib300d.lib
    opencv_features2d300dd.lib
    opencv_flann300d.lib
    opencv_gpu249d.lib
    opencv_legacy300d.lib
    opencv_ml300d.lib
    opencv_nonfree300d.lib
    opencv_objdetect300dd.lib
    opencv_ocl300d.lib
    opencv_photo249d.lib
    opencv_stitching300d.lib
    opencv_superres300d.lib
    opencv_ts300d.lib
    opencv_videostab300d.lib

我还想指出,我无法将代码生成更改为/MTd,因为Qt不能与此配合使用(但这不应该是问题,因为我在CMake配置中激活了WITH_QT选项来构建OpenCV)

此外,我将所有.dll文件放入与我的生成的调试.exe文件相同的目录中(否则Visual Studio会抱怨找不到.dll文件)

当我尝试执行OpenCV库的函数或仅创建对象时,我总是会得到未解决的链接错误,如下所示:

Fehler 2 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""class cv::Mat __cdecl cv::imread(class cv::String const &,int)" (?imread@cv@@YA?AVMat@1@ABVString@1@H@Z)" in Funktion "_main".

或者这个

Fehler 2 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall cv::VideoCapture::VideoCapture(void)" (??0VideoCapture@cv@@QAE@XZ)" in Funktion ""void __cdecl loadMovie(class QString)" (?loadMovie@@YAXVQString@@@Z)".

我真的很感激帮助,因为我已经为此挣扎了整整一个星期,尝试了互联网上的一切。


1
你能把其他库也加上吗?例如:opencv_videoio300d.lib...自从opencv3以后,有一些功能从highgui中分离到了不同的库中。不确定 imread现在在哪里。 - Micka
可能是 opencv_imgcodecs300d.lib - Micka
1
感谢您的快速回复;我已将opencv_imgproc300d.lib和opencv_imgcodecs300d.lib添加到链接器输入中,链接似乎已经解决。我尝试包含OpenCV文档中未列出的其他库,并尝试使_VideoCapture_正常工作。希望这样能够成功;再次感谢您的快速答复。 - vein
1
非常好的问题,顺便说一下,这使得快速回答成为可能,而无需请求额外的信息 =) - Micka
1个回答

2
问题在于,提供的链接 如何在Microsoft Visual Studio中使用OpenCV构建应用程序 是针对OpenCV 2.4.11版本的,而该版本的库管理略有不同。
从OpenCV 3.0开始,opencv_highgui库被分成了不同的子库,涉及VideoCapture、图像读取和其他内容。正如您在屏幕截图中所看到的,还有其他库未添加到您的项目中,例如opencv_imgcodecs300d.libopencv_videoio300d.lib
尝试添加所有这些库。如果可以正常工作,并且您想要减少依赖关系,可以删除库直到链接器失败。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接