首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Qt错误:找不到-lopencv_imgcodecs

Qt错误:找不到-lopencv_imgcodecs
EN

Stack Overflow用户
提问于 2019-04-11 12:53:15
回答 2查看 617关注 0票数 0

我已经在ubuntu 15.10上通过windows上的VMware安装了opencv、qt、qt创建者和cmake。

opencv已安装在以下目录中的/home/majidalaeinia/opencv/

项目储存库是在以下目录中克隆的:/home/majidalaeinia/Desktop/imgwarp-opencv/

我想在qt创建者中通过它的项目运行CMakeLists.txt,当我在qt创建者上按Build now时,我得到以下错误:

代码语言:javascript
运行
复制
error: cannot find -lopencv_imgcodecs
error: collect2: error: ld returned 1 exit status

问题在哪里,我如何解决?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-14 00:55:13

@ Majid,我上传了存储库并检查了代码。如果您进入demo文件夹,并使用我在下面提供的文件更改了当前的CMakeLists.txt文件,那么它应该编译(它确实在我的文件夹上编译所提供的更改):

代码语言:javascript
运行
复制
project(demo)
cmake_minimum_required(VERSION 2.6)
find_package(Qt5 REQUIRED COMPONENTS Widgets Core)
FIND_PACKAGE( OpenCV REQUIRED )

include_directories(${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/lib ${CMAKE_CURRENT_SOURCE_DIR})

set(demo_SRCS main.cpp projfile.cpp deformwin.cpp myimage.cpp singlephotoview.cpp pointspaint.cpp)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_INCLUDE_CURRENT_DIR ON)

#qt5_automoc(${demo_SRCS})

QT5_WRAP_CPP(QOBJ_CPP ${demo_SRCS})
qt5_wrap_ui(helloworld_FORMS_HEADERS deformwin.ui)
add_executable(demo ${demo_SRCS} ${helloworld_FORMS_HEADERS})
target_link_libraries(demo ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} imgwarp-lib opencv_core opencv_imgproc opencv_imgcodecs)

存储库中的代码是一段旧代码,仍然以Qt4作为主包装器。我认为您可能已经在您的计算机上安装了Qt5,实际上,我提供的代码将适用于Qt5。将其用作src文件夹中存在的其他src文件的指导方针,并相应地进行更改。

CMake会编译,但是由于它使用了Qt4,所以您需要找出要添加的最重要的模块,例如,包含QtGui/QApplication的新标准通常由QtWidgets/QApplication代替。

我还想留下我以前的答案,以防你需要一个起点或一个初始模板。我希望这能澄清一点,并能让你的项目向前推进。

票数 1
EN

Stack Overflow用户

发布于 2019-04-12 23:42:45

@ Majid,从您发布的CMakeLists.txt文件中没有指定CMAKE应该如何找到从您的项目中请求的库。而且没有声明target_link_libraries,所以CMAKE不知道在哪里链接它们。希望下面的小示例模板会对您的项目有所帮助:

代码语言:javascript
运行
复制
cmake_minimum_required (VERSION 3.1)
project(yourProject)

find_package( OpenCV REQUIRED )
find_package( Qt5 REQUIRED COMPONENTS Sql )

### this is for c++11
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_INCLUDE_CURRENT_DIR ON)

### QT stuff if you want a GUI
set(CMAKE_AUTOMOC ON)  # autogenerate qt gui features
set(CMAKE_AUTORCC ON)  # used for QT resource Files (if you need)

## Additional operation...

# From here you are specifically linking all OpenCV libraries and executables
### Add executables
add_executable(yourExecutable main/main.cpp ui/res/res.qrc ${SRCS} ${UI_HDRS} ${UI_SRCS})
target_link_libraries (yourProject example Qt5::Widgets ${OpenCV_LIBS}  Qt5::Sql)

### Add Library
add_library(yourProject_lib SHARED ${SRCS} ${UI_HDRS})
target_link_libraries (yourProject_lib example Qt5::Widgets ${OpenCV_LIBS})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55632996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档