2011-11-13 48 views
3

OpenCVライブラリを使用してC++アプリケーションを作成しようとしています。 OpenCVのメンテナーからの勧告に従って、私はCMakeを使ってMakefileを生成しています。私のプラットフォームは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ビルドの場所)/ 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

はい、実行可能ファイルが見つかる場所にCMakeが指定されていませんか? – astay13

関連する問題