2011-11-13 3 views
3

OpenCV 라이브러리를 사용하여 C++ 응용 프로그램을 작성하려고합니다. OpenCV 메인테이너들의 권고에 따라, 저는 Makefile을 생성하기 위해 CMake를 사용하고 있습니다. 내 플랫폼은 Windows 7 (64 비트)입니다. 내 컴파일러는 MinGW입니다 (응용 프로그램을 빌드 할 때 'mingw32-make'도구를 사용하고 있습니다).OpenCV 라이브러리 dll과 CMake 포함

지금 당장은 코드가 제대로 작동 할 수 있도록 설정이 올바른지 확인하려고합니다. OpenCV 라이브러리가 올바르게 구축되었는지 확인했습니다. 그런 다음 CMake를 사용하여 OpenCV 라이브러리를 내 빌드에 포함시킬 수 있는지 확인하려고했습니다.

DisplayImage.cpp

#include <cv.h> 
#include <highgui.h> 

using namespace cv; 

int main(int argc, char** argv) 
{ 
    Mat image; 
    image = imread(argv[1], 1); 

    if (argc != 2 || !image.data) 
    { 
     printf("No image data \n"); 
     return -1; 
    } 

    namedWindow("Display Image", CV_WINDOW_AUTOSIZE); 
    imshow("Display Image", image); 

    waitKey(0); 

    return 0; 
} 

나는 Makefile을 생성하기 위해 cmake-GUI를 사용

cmake_minimum_required(VERSION 2.8) 

project(DisplayImage) 
find_package(OpenCV REQUIRED) 
add_executable(DisplayImage DisplayImage) 
target_link_libraries(DisplayImage ${OpenCV_LIBS}) 

CMakeLists.txt 다음 사용 mingw32- : 나는 OpenCV의 튜토리얼에서 다음 예제 코드를 사용하고 make를 사용하여 애플리케이션을 빌드하십시오. 모든 것이 잘 작동하고 오류없이 프로그램이 컴파일됩니다. 그러나, 그것을 실행하려고하면 Windows가 멈추고 libopencv_core231.dll이 필요하다고 불평합니다. 내가 확인한이 DLL은 내 (OpenCV Build location)/bin 디렉토리에있다. 컴파일시 CMake/MinGW에 이것을 포함 시키려면 어떻게해야합니까?

답변

3

실행 파일 폴더에 opencv dll을 복사하십시오.

MACRO (COPY_DLL trgt libname) 
     ADD_CUSTOM_COMMAND (
     TARGET ${trgt} 
     POST_BUILD 
     COMMAND ${CMAKE_COMMAND} 
     ARGS -E copy "${OPENCVDIR/bin}/${libname}.dll" ${CMAKE_CURRENT_BINARY_DIR} 
    ) 
ENDMACRO (COPY_DLL) 
+1

CMake가 모든 실행 폴더에 복사 할 필요가 없도록 dll이 포함 된 디렉토리를 포함하지 않습니까? – astay13

+0

그것은 CMakes의 문제가 아닙니다. 운영 체제가 필요한 dll 파일을 검색하고 있습니다. – neagoegab

+1

예,하지만 실행 파일에 어디에서 찾을 수 있는지 알려주지는 않았습니까? – astay13