【问题标题】:Errors trying to compile OpenCV QT code from Github尝试从 Github 编译 OpenCV QT 代码时出错
【发布时间】:2018-01-30 16:38:05
【问题描述】:

我是 OpenCV / QT 环境的新手(以及一般的编程)。我正在尝试运行此代码:

https://github.com/Terranlee/Realtime_EVM

有人可以逐步告诉我需要安装/编译什么才能在 Windows 10 上运行此脚本吗?不确定要安装什么版本,或者它是否重要。

我已尝试按照此处 (https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows) 的指示进行操作,但我不断收到“未定义引用”错误,这意味着我没有正确引用库...或者我需要以某种方式编辑代码以指向我的库,但我不太确定要编辑什么以及如何编辑。

提前谢谢,请原谅我的笨拙!

-杰


回复回答

我根据 wiki 指南使用以下命令使用 CMake 编译了 OpenCV:

mingw32-make -j 8

mingw32-make 安装

完成后,我打开 Qt Creator 并通过下载 zip 文件打开 Github EVM 代码,然后将其解压缩并打开 rvm.pro 文件。

没有做任何更改,我尝试构建代码,我的第一个错误是它找不到“opencv_world310.dll”库。

我搜索它并在“E:\opencv\build\x64\vc14\bin”目录中找到了本地文件,因此我编辑了 rvm.pro 文件以在该目录中查找,如下所示:

win32 {
    OPENCVFOLDER = E:/_CODE_/_EXTERNAL_/OpenCV/my_git_build/
    OPENCVVERSION = 310
    INCLUDEPATH += E:\opencv\build\install\include
    INCLUDEPATH += E:\opencv\build\x64\vc14\lib


CONFIG(release, debug|release) {
    LIBS += -LE:\opencv\build\x64\vc14\lib
    LIBS += -lopencv_world$${OPENCVVERSION}
}
CONFIG(debug, debug|release) {
    DEFINES += DEBUG_MODE
    LIBS += -LE:\opencv\build\x64\vc14\lib
    LIBS += -lopencv_world$${OPENCVVERSION}d
}

这消除了最初的错误,但后来我遇到了几个“未定义的引用”问题:

C:\Eulerian Real-Time OpenCV build\Realtime-Video-Magnification-master\build-rvm-Desktop_Qt_5_9_0_MinGW_32bit-Debug\debug\main.o:-1:在函数“ZN2cv6StringD1Ev”中:

E:\opencv\build\include\opencv2\core\cvstd.hpp:664:错误:未定义对 `cv::String::deallocate()' 的引用

C:\Eulerian Real-Time OpenCV build\Realtime-Video-Magnification-master\build-rvm-Desktop_Qt_5_9_0_MinGW_32bit-Debug\debug\main.o:-1:在函数“ZN2cv6StringaSERKS0_”中:

E:\opencv\build\include\opencv2\core\cvstd.hpp:672:错误:未定义对 `cv::String::deallocate()' 的引用

C:\Eulerian Real-Time OpenCV build\Realtime-Video-Magnification-master\src\main\threads\CaptureThread.h:42: error: undefined reference to `cv::VideoCapture::~VideoCapture()'

......这些问题大约有 50 个,所以我不会全部列出。

仅仅是正确引用库的问题吗?

总之,我只是尝试使用 Qt Creator、mingGW、CMake 和 OpenCV 运行 Github 代码。请让我知道我需要如何编辑 .pro 文件以正确链接库。

我的 OpenCV 在 e:\opencv

再次感谢您的帮助和耐心等待!

-杰

【问题讨论】:

    标签: c++ qt opencv qt-creator


    【解决方案1】:

    关于您目前正在采取的步骤的信息很少。你想使用 Visual Studio / mingw 吗?这里有一些提示:

    • 您可以使用 Qt Creator 打开 pro 文件
    • 您可以使用qmake -spec <spec of the Visual Studio to use> -tp vc 生成与Visual Studio 兼容的解决方案,以选择spec 请参阅this 答案。

    使用其中任何一个,您都应该设置 Qt 包含/库。

    该项目的坏处在于,如果您查看 .pro 文件,它会明确使用 Linux 友好的包含路径:

    INCLUDEPATH += /usr/local/include \
                    /usr/local/include/opencv \
                   /usr/local/include/opencv2
    
    LIBS += `pkg-config --libs opencv` -ldl
    

    因此,如果您使用的是 Qt Creator,则必须在 Visual Studio 或 .pro 文件中添加 OpenCV 的包含/库路径。例如,您在 Qt/OpenCV 上的帖子中使用的链接具有 Windows 友好的链接:

    LIBS += D:\opencv-build\bin\libopencv_core320.dll
    LIBS += D:\opencv-build\bin\libopencv_highgui320.dll
    LIBS += D:\opencv-build\bin\libopencv_imgcodecs320.dll
    LIBS += D:\opencv-build\bin\libopencv_imgproc320.dll
    LIBS += D:\opencv-build\bin\libopencv_features2d320.dll
    LIBS += D:\opencv-build\bin\libopencv_calib3d320.dll
    

    因此,请更详细地解释您到目前为止所做的工作,以及缺少哪些参考(Qt/OpenCV)。

    【讨论】:

    • 非常感谢您的回复。这就是我到目前为止所做的:我已经按照wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows 到 tee 并下载并安装了带有 MingGW 5.3.0、CMake 3.7.2、OpenCV 3.2.0 的 Qt 5.9,然后按照以下步骤使用编译 OpenCV制作。完成后,我从 Github (zip) 下载了我想运行的代码,解压它,然后用 Qt Creator 打开 rvm.pro 文件。
    • 没有做任何更改,我尝试构建代码,我的第一个错误是它找不到“opencv_world310.dll”库。我搜索它并在“E:\opencv\build\x64\vc14\bin”目录中找到了该文件,因此我将 rvm.pro 文件编辑为如下所示: CONFIG(release, debug|release) { LIBS += - LE:\opencv\build\x64\vc14\lib LIBS += -lopencv_world$${OPENCVVERSION} } CONFIG(debug, debug|release) { DEFINES += DEBUG_MODE LIBS += -LE:\opencv\build\x64\vc14 \lib LIBS += -lopencv_world$${OPENCVVERSION}d
    • 这克服了错误,但是当我编译时,我得到了几个“未定义的引用”错误。很抱歉回复的格式.. 不知道我应该如何在这个论坛上正确回复(它告诉我不要使用“回答你的问题”但“cmets”的字符有限并且无法正确格式化)跨度>
    • @Jay - 您可以编辑初始问题以填写此信息:) 看看您得到了哪些确切的未定义引用会很好。
    • @Jay,好的,看起来 opencv 符号没有被链接。我不知道 libopencv_world 是什么,但你可以尝试添加在你发送的 wiki 中找到的所有库而不是那个吗?也许当然它是某种包装器,但是链接所有库是有意义的,无论如何都会忽略未定义的符号
    猜你喜欢
    • 2013-04-13
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多