使用代码构建OpenCV 3.2 @ Win7Prof64的错误:块16.01 / mingw 4.9.2

时间:2017-06-07 14:42:18

标签: opencv mingw codeblocks

执行CMake(全部默认)后,打开Code:Block项目文件 和建筑物给出了这些错误:

        D:\Guido\develop\opencv\sources\modules\highgui\src\window_w32.cpp: In function 'void cvSetModeWindow_W32(const char*, double)':
        D:\Guido\develop\opencv\sources\modules\highgui\src\window_w32.cpp:474:47: error: 'MONITOR_DEFAULTTONEAREST' was not declared in this scope
                     hMonitor = MonitorFromRect(&rect, MONITOR_DEFAULTTONEAREST);
                                                       ^
        D:\Guido\develop\opencv\sources\modules\highgui\src\window_w32.cpp:474:71: error: 'MonitorFromRect' was not declared in this scope
                     hMonitor = MonitorFromRect(&rect, MONITOR_DEFAULTTONEAREST);
                                                                               ^
        D:\Guido\develop\opencv\sources\modules\highgui\src\window_w32.cpp: In function 'LRESULT MainWindowProc(HWND, UINT, WPARAM, LPARAM)':
        D:\Guido\develop\opencv\sources\modules\highgui\src\window_w32.cpp:1377:45: error: 'MONITOR_DEFAULTTONEAREST' was not declared in this scope
                   hMonitor = MonitorFromRect(&rect, MONITOR_DEFAULTTONEAREST);
                                                     ^
        D:\Guido\develop\opencv\sources\modules\highgui\src\window_w32.cpp:1377:69: error: 'MonitorFromRect' was not declared in this scope
                   hMonitor = MonitorFromRect(&rect, MONITOR_DEFAULTTONEAREST);

......是什么让这一切变得更加奇怪:

在此文件的开头(window_w32.cpp),符号为_WIN32_IE 根本没有定义(为什么?)。

我不熟悉C:B和OpenCV的提示很受欢迎。

编辑: 我刚刚发现了一个提示:

http://answers.opencv.org/question/104125/i-am-unable-to-build-opencv-using-mingw-codeblockstotally-a-beginner/

我是否明白这一点,mingw 4.9.2与最近的openCV没有关系? (但4.9.2是实际附带C:B的编译器)...

1 个答案:

答案 0 :(得分:0)

想出来。

尽管OpenCV在2015年放弃了mingw编译器支持 (为什么??) 用mingw构建OpenCV是可能的。

2个模块在构建时会出现问题:highgui和ts。

两者似乎都与mingw的处理方式有关 Windows标题。

对于模块highgui: Error while building OpenCV :: MonitorFromRect was not declared in this scope

对于模块ts: https://github.com/google/googletest/issues/893

为什么 - 在天堂的名字 - 这么多磕磕绊绊的石头 在使用免费工具链的方式? 难怪M $会扼杀一切。 它必须方便使用。 如果我需要一辆车去做我的工作,我想要用这辆车。 不必建立("并理解,这很重要!")它。 SCNR。