【问题标题】:Linking errors for Qt and cvv when building OpenCV in Windows 10在 Windows 10 中构建 OpenCV 时出现 Qt 和 cvv 的链接错误
【发布时间】:2020-05-02 07:31:58
【问题描述】:

我正在尝试根据these instructions 构建OpenCV。使用 CMake 生成后,我在 build 文件夹中打开了 OpenCV.sln,切换到 Release 模式并成功构建了 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 中错误消息的图像:

【问题讨论】:

  • 您是否执行了第 9 步:“为安装 OpenCV 设置标志”中的步骤?另外,this 线程可能会有所帮助。
  • 是的,我完全按照它说的执行了第 9 步。该线程建议关闭 opencv_world。这是一个好主意吗?我以后可能需要它。如果必须,我是否应该删除 build 文件夹并从头开始?
  • 我在启用 opencv_world 的情况下成功构建
  • 是的,但它也建议将 CMake 变量 BUILD_opencv_cvv 设置为 OFF,这似乎与您的问题更相关。我不确定你是否需要那个包?是的,如果您进行了多项与 CMake 相关的更改并且您认为 CMake 缓存可能已损坏或不正确,则删除 build 文件夹并从头开始可能会有所帮助。
  • @squareskittles 关闭了 BUILD_opencv_cvv 工作。

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


【解决方案1】:

把我的 cmets 变成一个答案:

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

cmake -DBUILD_opencv_cvv=OFF ...

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

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

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

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

【讨论】:

    猜你喜欢
    • 2015-12-07
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 2019-09-04
    相关资源
    最近更新 更多