在Windows 10中构建OpenCV时Qt和cvv的链接错误

时间:2020-01-15 14:01:41

标签: c++ visual-studio opencv build cmake

我正在尝试根据these instructions构建 OpenCV 。用 CMake 生成后,我在构建文件夹中打开 OpenCV.sln ,切换到发布模式并成功构建了 ALL_BUILD 。但是,当我尝试在CMake下构建 INSTALL 选项时,出现如下错误:

Error   LNK2001 unresolved external symbol "public: virtual struct QMetaObject const * __cdecl cvv::qtutil::Signal::metaObject(void)const " 
Error   LNK2019 unresolved external symbol "public: void __cdecl cvv::qtutil::ZoomableImage::updateConversionResult(class cv::Mat const &,enum cvv::qtutil::ImageConversionResult)const " 
...

我正在使用Visual Studio 19在Windows 10上安装OpenCV 4.2。如何解决此问题?

这是Visual Studio中错误消息的图像:

enter image description here

1 个答案:

答案 0 :(得分:1)

将我的评论变成答案:

here中描述的GitHub问题引用了与您发布的错误类似的错误。虽然建议的“解决方案”似乎更像是一种变通办法,但它可能有助于解决问题。首先,通过在BUILD_opencv_cvv变量设置为OFF的情况下运行CMake,尝试在没有cvv模块(OpenCV的交互式GUI组件)的情况下进行构建:

cmake -DBUILD_opencv_cvv=OFF ...

您还可以使用CMake GUI来设置变量,方法是单击添加条目按钮,并将BUILD_opencv_cvv定义为OFF

GitHub问题进一步说明,如果进行此更改后仍然存在未定义的引用错误,您还可以尝试将BUILD_opencv_world设置为OFF

cmake -DBUILD_opencv_cvv=OFF -DBUILD_opencv_world=OFF ...

这可能有助于成功构建内容,但应注意,这些禁用的模块将被排除在构建之外。