У меня есть копия OpenCV2.4.0 установлен в/USR/местные/БиблиотекаCMake линкер не может найти библиотеки OpenCV
Моя программа составлена правильно, но когда линкер вызывается, он дал такие ошибки, как:
/home/zhouw/moos-ivp-zhouw/trunk/src/pATRTest/mst.cpp:661: undefined reference to 'cv::_OutputArray::_OutputArray(cv::Mat const&)'
CMakeFiles/pATR.dir/mst.cpp.o:/home/zhouw/moos-ivp-zhouw/trunk/src/pATRTest/mst.cpp:675: more undefined references to `cv::_OutputArray::_OutputArray(cv::Mat const&)'
collect2: ld returned 1 exit status
make[2]: *** [../bin/pATR] Error 1
make[1]: *** [src/pATRTest/CMakeFiles/pATR.dir/all] Error 2
make: *** [all] Error 2
Странно, что моя программа интенсивно использует opencv, если у CMake не получается найти библиотеки, он должен был жаловаться на гораздо более неопределенные ссылки, чем на некоторые из них.
Я попытался добавить LINK_DIRECTORIES ("/ usr/local/lib") в мой файл cmake, но это не помогло. В каталоге/usr/local/lib также установлена другая библиотека под названием POCO. Моя программа также связывается с библиотеками POCO, но у CMake нет проблем с их поиском.
Если я вручную свяжусь с -L/usr/local/lib, он будет правильно связываться без ошибок.
CMakeLists.txt выглядит следующим образом
PROJECT(pATR)
#what files are needed?
SET(SRCS
spline.hpp
utils.hpp utils.cpp
mst.hpp mst.cpp
cluster.hpp cluster.cpp
target.hpp target.cpp
detector.hpp detector.cpp
classifier.hpp classifier.cpp
atr.hpp atr.cpp
MOOSAtr.h MOOSAtr.cpp
main.cpp
)
ADD_EXECUTABLE(pATR ${SRCS})
# indicate how to link
#LINK_DIRECTORIES("/usr/local/lib")
TARGET_LINK_LIBRARIES(pATR opencv_core opencv_highgui opencv_imgproc MOOS)
INSTALL(TARGETS
pATR
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
)
Любая идея, что происходит? Большое спасибо!
Я попытался с find_package (OpenCV ТРЕБУЕТСЯ), прежде чем я отвечал на этот вопрос, я почему-то не связывают библиотеки как $ {OpenCV_LIBS}, но все же использовали их отдельные имена, т.е.е. opencv_core opencv_highgui opencv_imgproc. Спасибо, все работает сейчас! – Silmarilli
Причудливая вещь произошла сегодня. Я скопировал все дерево каталогов моего программного обеспечения на другую Linux-машину с одинаковыми версиями всего и одной установки OpenCV. Ошибка связи! – Silmarilli
Я добавил SET (OpenCV_LIBS opencv_core opencv_highgui opencv_imgproc), чтобы заставить его работать на этот раз. что это подразумевает? find_package не работает должным образом? – Silmarilli