【发布时间】:2017-12-07 17:50:00
【问题描述】:
我正在尝试使用Cmake 在 C++ 上使用 opencv 构建一个项目。但是有一个我无法解决的错误。我搜索了很多,但一无所获。
注意:
我是 OpenCV 的初学者。所以我什至不知道为什么需要这个库。只是在网站上做同样的事情。
错误是/usr/bin/ld: cannot find -lDisplayImage。
我的code:
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// read image
Mat img = imread("foo.jpg", CV_LOAD_IMAGE_UNCHANGED);
// show it in the window
imshow("Window Name",img);
waitKey();
}
我的CMakeLists.txt:
cmake_minimum_required(VERSION 3.8)
project(image_processing)
find_package( OpenCV REQUIRED )
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp)
add_executable(image_processing ${SOURCE_FILES})
target_link_libraries( image_processing DisplayImage ${OpenCV_LIBS} )
我的编译输出:
[ 50%] Linking CXX executable image_processing
/usr/bin/ld: cannot find -lDisplayImage
collect2: error: ld returned 1 exit status
CMakeFiles/image_processing.dir/build.make:137: recipe for target 'image_processing' failed
make[3]: *** [image_processing] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/image_processing.dir/all' failed
make[2]: *** [CMakeFiles/image_processing.dir/all] Error 2
CMakeFiles/Makefile2:79: recipe for target 'CMakeFiles/image_processing.dir/rule' failed
make[1]: *** [CMakeFiles/image_processing.dir/rule] Error 2
Makefile:118: recipe for target 'image_processing' failed
make: *** [image_processing] Error 2
ld -ldisplayimage --verbose 命令的输出:
attempt to open //usr/local/lib/x86_64-linux-gnu/libdisplayimage.so failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libdisplayimage.a failed
attempt to open //lib/x86_64-linux-gnu/libdisplayimage.so failed
attempt to open //lib/x86_64-linux-gnu/libdisplayimage.a failed
attempt to open //usr/lib/x86_64-linux-gnu/libdisplayimage.so failed
attempt to open //usr/lib/x86_64-linux-gnu/libdisplayimage.a failed
attempt to open //usr/local/lib64/libdisplayimage.so failed
attempt to open //usr/local/lib64/libdisplayimage.a failed
attempt to open //lib64/libdisplayimage.so failed
attempt to open //lib64/libdisplayimage.a failed
attempt to open //usr/lib64/libdisplayimage.so failed
attempt to open //usr/lib64/libdisplayimage.a failed
attempt to open //usr/local/lib/libdisplayimage.so failed
attempt to open //usr/local/lib/libdisplayimage.a failed
attempt to open //lib/libdisplayimage.so failed
attempt to open //lib/libdisplayimage.a failed
attempt to open //usr/lib/libdisplayimage.so failed
attempt to open //usr/lib/libdisplayimage.a failed
attempt to open //usr/x86_64-linux-gnu/lib64/libdisplayimage.so failed
attempt to open //usr/x86_64-linux-gnu/lib64/libdisplayimage.a failed
attempt to open //usr/x86_64-linux-gnu/lib/libdisplayimage.so failed
attempt to open //usr/x86_64-linux-gnu/lib/libdisplayimage.a failed
ld: cannot find -ldisplayimage
我试图找到那个图书馆,但我找不到。我检查了我所有的 lib 文件夹。
我的 opencv 安装在 /opt/opencv/ 上并构建在 /opt/opencv/release/ 上。
感谢您的帮助。我不知道如何解决它。
【问题讨论】:
-
您尝试链接的
DisplayImage库是什么,它与OpenCV 有什么关系? -
我已经添加了我的代码。
-
您还没有回答以上问题,我仍然没有看到任何与 OpenCV 相关的错误。您正在尝试链接一些您尚未解释的晦涩库,链接器无法找到该库,并且您的代码显然甚至没有使用该库。
-
我只是从网站上安装指南。如果没有 DisplayImage,编译器会出错(我不在 linux atm 上,无法编写确切的错误)。我是openCV的初学者。所以我也不知道这个库是什么。
-
从
CMakeLists.txt中删除DisplayImage。看起来它只是跟随 OpenCV demo 的剩余复制粘贴工件。