2015-09-11 1 views
2

Я использую следующий CMake файл для построения проекта OpenCV с помощью команды CMake с последующим сделать.OpenCV (связь ошибок)

cmake_minimum_required(VERSION 2.8) 
project(t) 
#set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} /home/keiths/opencv/opencv-2.4.11_build/build) 
SET(CMAKE_C_COMPILER mpicc) 
SET(CMAKE_CXX_COMPILER mpicxx) 
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 
include_directories(${OpenCV_INCLUDE_DIRS}) 

find_package(OpenCV REQUIRED) 
find_package(MPI REQUIRED) 

add_executable(t t.cpp) 
target_link_libraries(t ${OpenCV_LIBS} ${OpenCV_LIBRARIES} opencv_core opencv_highgui opencv_calib3d opencv_contrib opencv_core opencv_features2d opencv_flann opencv_gpu opencv_highgui opencv_imgproc opencv_legacy opencv_ml opencv_nonfree opencv_objdetect opencv_ocl opencv_photo opencv_stitching opencv_superres opencv_ts opencv_video opencv_videostab rt pthread m dl) 

MESSAGE(${OpenCV_LIBS}) 
MESSAGE(${OpenCV_INCLUDE_DIRS}) 

CMake завершает отлично, но сделать дает мне следующую ошибку:

CMakeFiles/t.dir/t.cpp.o: In function main': t.cpp:(.text+0x56): undefined reference to cv::namedWindow(std::__cxx11::basic_string, std::allocator > const&, int)' collect2: error: ld returned 1 exit status make[2]: * [t] Error 1 make[1]: * [CMakeFiles/t.dir/all] Error 2 make: *** [all] Error 2

Я попытался запустить следующую команду

г ++ t.cpp $ (PKG -config --libs opencv --cflags)

, но получают следующую ошибку

/home/keiths/tmp/ccWFcaXH.o: In function main': t.cpp:(.text+0x56): undefined reference to cv::namedWindow(std::__cxx11::basic_string, std::allocator > const&, int)' collect2: error: ld returned 1 exit status

Я бег следующего простого кода

#include "opencv2/opencv.hpp" 
#include "opencv2/core/core.hpp" 
#include "opencv2/highgui/highgui.hpp" 
//#include <mpi.h> 

using namespace cv; 

int main(int argc, char **argv) {  
     Mat image; 
     namedWindow("Display window", WINDOW_AUTOSIZE); 
     return 0; 
    } 

Я пытался так много рекомендаций, как я могу без успеха. Платформа CentOS, и я ограниченный пользователь (не root) с моими локально установленными (более свежими) версиями g ++/gcc. Я получаю правильный список библиотек для команды pkg-config и настроил пути к библиотеке, а также PATH в свою локальную папку opencv.

Просто чтобы добавить очень важный момент, я попытался скомпилировать тот же код, указав явно компилятор g ++ (/ usr/bin/g ++), и все прошло хорошо. Похоже, что проблема связана с моим локальным компилятором g ++ в '/ home/keiths/lbin'. Мне нужна эта последняя версия, но для возможности C++ 11 (старый - 4.4.7, и для обновления Sysadmin потребуется возраст для времени)

ответ

3

Я построил свою библиотеку OpenCV, используя старый компилятор g ++ (в system bin), до создания последней версии g ++. Перестройка библиотеки OpenCV с использованием нового компилятора g ++ сделала это для меня. Из любопытства я попытался создать пример OpenCV, используя старый компилятор, и он вернул много строк «неопределенных ссылок», но я счастлив сменить проблемы, так как мне это не нужно!