C++ Qt Creator在链接到OpenCV时给了我一个错误
我在网上有一个简单的OpenCV程序。我正在尝试用Qt-creator编译它。源代码如下(main.cpp): 当我构建项目时,我得到以下链接器错误(加上其他类似错误): 但是,当使用简单的CMake文件时,它可以完美地构建和运行。我的CMakeLists.txt非常简单:C++ Qt Creator在链接到OpenCV时给了我一个错误,c++,qt,opencv,qt-creator,qmake,C++,Qt,Opencv,Qt Creator,Qmake,我在网上有一个简单的OpenCV程序。我正在尝试用Qt-creator编译它。源代码如下(main.cpp): 当我构建项目时,我得到以下链接器错误(加上其他类似错误): 但是,当使用简单的CMake文件时,它可以完美地构建和运行。我的CMakeLists.txt非常简单: cmake_minimum_required(VERSION 2.8) project( DisplayImage ) find_package( OpenCV REQUIRED ) add_executable( Disp
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage main.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
是否需要设置其他路径?首先,检查是否已安装OpenCV的所有依赖项。您可能还需要安装
FFmpeg
然后替换:
LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui -lopencv_shape -lopencv_videoio
据此:
LIBS += -L/usr/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -lopencv_shape -lopencv_videoio
您还需要添加特定的OpenCV配置:
CONFIG += opencv
或者:
unix: CONFIG += link_pkgconfig
unix: PKGCONFIG += opencv
这些小改动对我很有用。问题解决了
发生在我身上的原因是我首先
sudo apt install libopencv-highgui-dev
及
然后从源代码处编译OpenCV 2.4.13并安装它(因为我需要的正是这个版本)
通过cmake,它链接到OpenCV 4.1.0,但通过Qt Creator,它链接到OpenCV 2.4.13。解决方案是卸载OpenCV并仅安装版本2.4.13。我也在使用OpenCV处理Qt,我使用以下行将OpenCV添加到Qt中
.pro
文件:
INCLUDEPATH += /usr/local/include/opencv
LIBS += `pkg-config --cflags --libs opencv`
您还应通过终端上的以下设备检查opencv安装:
pkg-config --modversion opencv
如果出现错误,则说明安装有问题
编辑:如果您安装了opencv4.x.x,则应使用“opencv4”
更改上面命令中的单词“opencv”
,尝试以下操作:
CONFIG += opencv
INCLUDEPATH += /usr/local/include/opencv4
所以,让我理解一下-问题是CMake文件链接可以工作,而.Pro文件却不能。是吗?是的,没错。然后,为此我添加了qmake标签。Qt Creator与CMake和qmake都能很好地协同工作。您看到的差异是因为qmake使用了.pro文件。我可能错了,但您需要向您的pro文件中添加类似于
QT+=core
QT-=gui
QT+=widgets
的内容。请尝试:LIBS+=pkg config opencv--LIBS
,谢谢您的回答。不幸的是,在尝试这些更改之后,我仍然会遇到相同的错误。
sudo apt install libopencv-dev
INCLUDEPATH += /usr/local/include/opencv
LIBS += `pkg-config --cflags --libs opencv`
pkg-config --modversion opencv
CONFIG += opencv
INCLUDEPATH += /usr/local/include/opencv4