OPENCV error: undefined reference to "cvLoadImage"
Habe ich zwei Dateien:
test.cpp :
#include "highgui.h"
#include <cv.h>
int main( int argc, char** argv ) {
IplImage* img = cvLoadImage( argv[1] );
cvNamedWindow( "Example1", CV_WINDOW_AUTOSIZE );
cvShowImage( "Example1", img );
cvWaitKey(0);
cvReleaseImage( &img );
cvDestroyWindow( "Example1" );
}
CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)
set(CMAKE_MODULE_PATH ${/home/jinder1s/Documents/project/opencv/FindOpenCV.make} )
project(hello)
Find_package (OpenCV REQUIRED)
if(OpenCV_FOUND)
add_executable (Hello test.cpp)
find_library(Opencv_lib
NAMES opencv_core opencv_highgui opencv_imgproc
PATHS /usr/local/lib)
endif()
dies ist die Vorlage für das, was ich bekam.
jinder1s@jinder1s-lat-lap:~/Documents/project/opencv/tests$ cmake .
-- Configuring done
-- Generating done
-- Build files have been written to: /home/jinder1s/Documents/project/opencv/tests
jinder1s@jinder1s-lat-lap:~/Documents/project/opencv/tests$ make
Linking CXX executable Hello
CMakeFiles/Hello.dir/test.cpp.o: In function `main':
test.cpp:(.text+0x1d): undefined reference to `cvLoadImage'
test.cpp:(.text+0x35): undefined reference to `cvNamedWindow'
test.cpp:(.text+0x49): undefined reference to `cvShowImage'
test.cpp:(.text+0x55): undefined reference to `cvWaitKey'
test.cpp:(.text+0x61): undefined reference to `cvReleaseImage'
test.cpp:(.text+0x6d): undefined reference to `cvDestroyWindow'
collect2: error: ld returned 1 exit status
make[2]: *** [Hello] Error 1
make[1]: *** [CMakeFiles/Hello.dir/all] Error 2
make: *** [all] Error 2
Ich gerade angefangen zu lernen, opencv, als in das ist mein Erster code, und ich kann einfach nicht scheinen, um es zu arbeiten. Ich könnte wirklich etwas Hilfe hier. Kann nicht sehen, was ich falsch mache.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Muss man sagen, cmake, um die Verknüpfung mit der Bibliothek nach überprüfung, dass die Bibliothek zur Verfügung.
Etwas wie
target_link_libraries( Hello ${OpenCV_LIBS} )
kurz vor dem endif()Sehen http://www.cmake.org/cmake/help/cmake_tutorial.html wie CMake, und http://docs.opencv.org/doc/tutorials/introduction/linux_gcc_cmake/linux_gcc_cmake.html für CMake mit openCV.
Können Sie überprüfen, wie Sie in der linker wird aufgerufen durch die Eingabe von "make VERBOSE=1". Es hilft Debuggen cmake-Dateien.
set(CMAKE_MODULE_PATH path)
ist seltsam. Für einen absoluten Pfad, sollte esset(CMAKE_MODULE_PATH /home/jinder1s/Documents/project/opencv/FindOpenCV.make)
. Sie möchte etwas mehr tragbar, wieset(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
und kopieren Sie die FindOpenCV.cmake in yourproject/cmake/Modules/ - Verzeichnis. Aber da cmake nicht klagt, Ihr Problem nicht im Zusammenhang mit diesem Punkt.Ich denke, Sie müssen angeben, dass der namespace gibt. Also entweder ein
using namespace cv;
bis oben, odercv::function_name
für jeden Aufruf der Funktion.Auch, das sieht aus wie OpenCV-1.x-code. Gibt es einen Grund, warum du tust, dass anstelle der Verwendung von OpenCV-2.x-syntax? 2.x ist Weise mehr stabil und intuitiv. Zum Beispiel, dass load image line wäre nur
Mat img = imread(filename);
im 2.x. Und Sie müssten#include "opencv2/core/core.hpp"
undusing namespace cv;
oben, für die 2.x.Diese cheatsheet kann helfen.