使用 Qt 和 Cuda for Python 构建 OpenCV,在 build_all cmake 目标上运行到 LNK2019
Posted
技术标签:
【中文标题】使用 Qt 和 Cuda for Python 构建 OpenCV,在 build_all cmake 目标上运行到 LNK2019【英文标题】:Building OpenCV with Qt and Cuda for Python, running into LNK2019 on build_all cmake goal 【发布时间】:2021-06-06 22:42:34 【问题描述】:我最近一直在尝试构建带有 Qt 支持以及 Cuda 支持的 OpenCV。 以前我用 Cuda 成功且相当容易地构建了 OpenCV,但 Qt 似乎并不容易就位。 我已经使用 OpenCV 4.5.2 版本与 Cuda 一起构建了它,所以我尝试对 Qt 做同样的事情,但遇到了类似于 this issue 的错误。
所以接下来我尝试使用据称解决了这个问题的最新版本,克隆了 master 分支并遇到了无数问题,甚至不知道从哪里开始考虑它们(都与 stdio.h 相关;奇怪的基本错误,例如作为所谓的 stdio.h 中的语法错误)。
决定放弃它并再次尝试 4.5.2,我可以让 OpenCV 本身构建(不启用 Cuda 或 Qt 只是为了看看它是否可以工作)和 OpenCV 与 Cuda 一起构建,但在运行 cmake 的构建所有Qt 产生以下错误
LNK2019 unresolved external symbol "int __cdecl cv::pollKey(void)" (?pollKey@cv@@YAHXZ) referenced in function "struct _object * __cdecl pyopencv_cv_pollKey(struct _object *,struct _object *,struct _object *)" (?pyopencv_cv_pollKey@@YAPEAU_object@@PEAU1@00@Z) \build\modules\python3\cv2.obj
我一直无法找到任何相关信息,我遇到了一些关于这个错误的帖子,这些帖子来自人们,包括他们项目中的一些 OpenCV,不包括必要的库等,但没有尝试构建东西本身.
我还考虑在我的 4.5.2 版本中替换解决上述问题的文件,因为更改似乎并不大,并且解决了我之前在 4.5.2 和 Qt 中遇到的问题。 我尝试的另一件事是自行安装 Qt,并尝试将其用作 cmake 中的 qt5dir,但这也不起作用(与通过 pip 安装的 qt 相反)。
此时我已经走到了尽头,我不知道还要尝试什么或转向哪里,希望有人已经对此有所了解。 以下是一些希望相关的信息:
Latest cmake configuration CMakeVars.txt associated with it Path 使用 Python 3.8.3 Qt 版本 5.9.7(也尝试过 Qt 版本 5.12.11)最后我想说我以前从未处理过 cmake 或构建任何类型的二进制文件,所以这是我第一次遇到这样的世界
【问题讨论】:
【参考方案1】:设置 HAVE_WIN32UI=, 显然,由于编译时排除,同时启用 HAVE_QT 和上述标志会导致构建中的一些问题。假设您的用例不需要上述标志。我遇到了同样的问题,现在已经解决了。
【讨论】:
以上是关于使用 Qt 和 Cuda for Python 构建 OpenCV,在 build_all cmake 目标上运行到 LNK2019的主要内容,如果未能解决你的问题,请参考以下文章
使用 CUDA 在 python 中展开一个可并行化的 for 循环