在此范围内未声明构建OpenCV :: MonitorFromRect时出错 [英] Error while building OpenCV :: MonitorFromRect was not declared in this scope

查看:268
本文介绍了在此范围内未声明构建OpenCV :: MonitorFromRect时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图构建OpenCV version 2.4.8以便与CodeBlocksMinGw一起使用.我遵循了此处中的说明.但是我遇到了以下错误.我不知道如何解决.在网上搜索没有发现任何有用的信息.

I was trying to build OpenCV version 2.4.8 to use it with CodeBlocks and MinGw. I followed the instructions from here. But I got the following error. I have no clue how to solve it. I didn't find anything useful by searching in the net.

也无法解决.

我不想弄乱openCV代码,我打算在我的项目中使用OpenCV,这是我第一次使用它.

I don't want to mess with the openCV code, I intend to use OpenCV in my project and this is first time I am using it.

[ 26%] Built target pch_Generate_opencv_highgui
[ 26%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/window_w32.cpp.obj
C:\Program Files (x86)\opencv\sources\modules\highgui\src\window_w32.cpp: In function 'void cvSetModeWindow_W32(const char*, double)':
C:\Program Files (x86)\opencv\sources\modules\highgui\src\window_w32.cpp:477: error: 'MonitorFromRect' was not declared in this scope
C:\Program Files (x86)\opencv\sources\modules\highgui\src\window_w32.cpp: In function 'LRESULT MainWindowProc(HWND__*, UINT, WPARAM, LPARAM)':
C:\Program Files (x86)\opencv\sources\modules\highgui\src\window_w32.cpp:1355: error: 'MonitorFromRect' was not declared in this scope
mingw32-make.exe[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/window_w32.cpp.obj] Error 1
mingw32-make.exe[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
mingw32-make.exe: *** [all] Error 2 

我试图在文件中手动包含函数的原型,但随后涉及到链接错误.
谁能告诉我这里可能出了什么问题?我该如何解决?

I tried to manually include the prototype of the function in the file, but then it comes to linking error.
will anyone please tell me what may have gone wrong here? How can I solve it?

推荐答案

看来,最近提交的所有更改都未反映在您的签出中.要解决这些问题,请进行以下更改:

It seems All the changes from recent commit is not reflected in your check out. To resolve the problems, make the following changes:

modules/highgui/src/precomp.hpp中,添加+标记的行:

 #if defined WIN32 || defined WINCE
 +    #if !defined _WIN32_WINNT
 +        #ifdef HAVE_MSMF
 +            #define _WIN32_WINNT 0x0600 // Windows Vista
 +        #else
 +            #define _WIN32_WINNT 0x0500 // Windows 2000
 +        #endif
 +    #endif
 +
      #include <windows.h>

然后在modules/highgui/src/window_w32.cpp中,删除-标记的行:

And in modules/highgui/src/window_w32.cpp, remove the - marked lines:

 #if defined WIN32 || defined _WIN32

 -#define COMPILE_MULTIMON_STUBS // Required for multi-monitor support
 -#ifndef _MULTIMON_USE_SECURE_CRT
 -#  define _MULTIMON_USE_SECURE_CRT 0 // some MinGW platforms have no strncpy_s
 -#endif
 -
 -#if defined SM_CMONITORS && !defined MONITOR_DEFAULTTONEAREST
 -#  define MONITOR_DEFAULTTONULL       0x00000000
 -#  define MONITOR_DEFAULTTOPRIMARY    0x00000001
 -#  define MONITOR_DEFAULTTONEAREST    0x00000002
 -#  define MONITORINFOF_PRIMARY        0x00000001
 -#endif
 -#ifndef __inout
 -#  define __inout
 -#endif
 -
  #ifdef __GNUC__
  #  pragma GCC diagnostic ignored "-Wmissing-declarations"
  #endif

  #include <commctrl.h>
 -#include <winuser.h>
  #include <stdlib.h>
  #include <string.h>

这将解决构建错误.

这篇关于在此范围内未声明构建OpenCV :: MonitorFromRect时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆