ast*_*y13 5 c++ dll opencv mingw cmake
我正在尝试使用 OpenCV 库编写 C++ 应用程序。根据 OpenCV 维护者的建议,我使用 CMake 生成 Makefile。我的平台是 Windows 7(64 位)。我的编译器是 MinGW(所以我使用 'mingw32-make' 工具来构建应用程序)。
现在我正在尝试确保我的设置正确,以便我可以继续编写代码。我已验证 OpenCV 库已正确构建。然后我尝试验证我是否可以使用 CMake 在我的构建中包含 OpenCV 库。我正在使用 OpenCV 教程中的以下示例代码:
显示图像.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;
}
Run Code Online (Sandbox Code Playgroud)
CMakeLists.txt
cmake_minimum_required( VERSION 2.8 )
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
Run Code Online (Sandbox Code Playgroud)
我使用 cmake-gui 生成 Makefile,然后使用 mingw32-make 构建应用程序。一切正常,程序编译没有错误。但是,当我尝试运行它时,Windows 停止并抱怨它需要 libopencv_core231.dll。我已经检查过,这个 dll 位于我的(OpenCV 构建位置)/bin 目录中。编译时如何让 CMake/MinGW 包含它?
将 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)
Run Code Online (Sandbox Code Playgroud)