将 OpenCV 4.9.0 与 Qt Creator 链接时未定义的引用

问题描述 投票:0回答:1

我正在尝试将 OpenCV 4.9.0 集成到 Windows 上的 Qt Creator 5.0.2(基于 Qt 5.15.2 和 MSVC 2019 64 位)中的 Qt 项目中。我正在使用预构建的 OpenCV 库,位于 C:/opencv/build 中。我正在使用 Qt 5.12.12 MinGW 7.3.0 64 位。然而,在编译过程中,我遇到了多个与 OpenCV 相关的未定义引用错误,特别是 cv::Mat 和 cv::imread。

这就是我所做的:

我下载了 OpenCV 预建库并将它们解压到 C:/opencv/。

在我的 .pro 文件中,我添加了以下内容:

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../opencv/build/x64/vc16/lib/ -lopencv_world490
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../opencv/build/x64/vc16/lib/ -lopencv_world490d

INCLUDEPATH += $$PWD/../../../../opencv/build/include
DEPENDPATH += $$PWD/../../../../opencv/build/include

我确保必要的 OpenCV 库(

opencv_world490.lib
opencv_world490d.lib
)包含在 lib 文件夹(
C:/opencv/build/x64/vc16/lib
)中,相应的 DLL(
opencv_world490.dll
opencv_world490d.dll
)位于 bin 文件夹(
C:/opencv/build/x64/vc16/bin)中
)。

我运行了 qmake,清理了项目,然后重建了它。

在构建项目时,我收到多个未定义的引用错误,例如:

release/tst.o:tst.cpp:(.text+0x56c): undefined reference to `cv::Mat::Mat(int, int, int, void*, unsigned long long)'
release/tst.o:tst.cpp:(.text+0xc69): undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'

链接 OpenCV 时如何解决这些未定义的参考错误?可能导致这些问题的原因是什么?在 Qt 项目中链接 OpenCV 的正确配置是什么?

c++ qt opencv dll
1个回答
0
投票

我刚刚找到了这个 OpenCV Build for MinGW - 我认为它更适合我的 MinGW 设置 - 我的项目现在正在成功编译和链接。

© www.soinside.com 2019 - 2024. All rights reserved.