OPENCV的highgui工程在vc6.0下编译出错的解决
2009-08-30 23:00
423 查看
最近在论坛里发现有很多人提出如下的问题:
怎么按照网站上那个安装方法安装了,但调试运行怎么会出错啊?
错误是:
error C2065: 'GetWindowLongPtr' : undeclared identifier
C:\Opencv1.0\OpenCV\otherlibs\highgui\window_w32.cpp(243) : error C2065: 'GWLP_USERDATA' : undeclared identifier
C:\Opencv1.0\OpenCV\otherlibs\highgui\window_w32.cpp(432) : error C2065: 'SetWindowLongPtr' : undeclared identifier
C:\Opencv1.0\OpenCV\otherlibs\highgui\window_w32.cpp(828) : error C2065: 'GetClassLongPtr' : undeclared identifier
C:\Opencv1.0\OpenCV\otherlibs\highgui\window_w32.cpp(828) : error C2065: 'GCLP_HBRBACKGROUND' : undeclared identifier
C:\Opencv1.0\OpenCV\otherlibs\highgui\window_w32.cpp(972) : error C2065: 'GCLP_HCURSOR' : undeclared identifier
C:\Opencv1.0\OpenCV\otherlibs\highgui\window_w32.cpp(1253) : error C2065: 'GWLP_WNDPROC' : undeclared identifier
一直以来都在用vs.net所以一直没有这类问题。今天为了在一个低端的本本上安装vc6.0和opencv让我费很大的力气才弄明白。
其实是highgui目录下的window_w32.cpp宏定义出现的问题,
#if defined WIN64 || defined EM64T
上面这个宏判断其实应该是返回FALSE才对。但是由于6.0的编译的问题它这里就编程true了,因而执行了下面的宏定义
#define icvGetWindowLongPtr GetWindowLongPtr
#define icvSetWindowLongPtr( hwnd, id, ptr ) SetWindowLongPtr( hwnd, id, (LONG_PTR)(ptr) )
#define icvGetClassLongPtr GetClassLongPtr
#define CV_USERDATA GWLP_USERDATA
#define CV_WNDPROC GWLP_WNDPROC
#define CV_HCURSOR GCLP_HCURSOR
#define CV_HBRBACKGROUND GCLP_HBRBACKGROUND
GetClassLongPtr这些函数应该不是win32的程序,而是win64的程序,因此才会出错。
解决方法是把#if defined WIN64 || defined EM64T随便改成一个系统不认识的,没有定义过的宏就
行了。如: 改成#if defined WIN642 || defined EM64T 。或者干脆注释调上面的全部内容。
对于opencv1.0 版本改过之后就可以编译_make里面的opencv.dsw 里面的highgui.dsp了。对于
5.0beta版本,可能要先把OpenCV\otherlibs\_graphics\src下面的graphic_libs.dsw编译后才能编译
highgui.dsp(呵呵,今天把所以版本都试了一遍)
如果以上编译全部通过,可能还要配置一下环境变量,如:d:\Program Files\OpenCV\bin; 如果不配
置的话会出现找不到coxcore100.dll等文件的错误。vs.net下就不会有以上的麻烦。
如果又出现类似tiff,png,jpeg等错误,则需要编译opencv的附加库,目录在:
C:\Program Files\OpenCV\otherlibs\_graphics\src
怎么按照网站上那个安装方法安装了,但调试运行怎么会出错啊?
错误是:
error C2065: 'GetWindowLongPtr' : undeclared identifier
C:\Opencv1.0\OpenCV\otherlibs\highgui\window_w32.cpp(243) : error C2065: 'GWLP_USERDATA' : undeclared identifier
C:\Opencv1.0\OpenCV\otherlibs\highgui\window_w32.cpp(432) : error C2065: 'SetWindowLongPtr' : undeclared identifier
C:\Opencv1.0\OpenCV\otherlibs\highgui\window_w32.cpp(828) : error C2065: 'GetClassLongPtr' : undeclared identifier
C:\Opencv1.0\OpenCV\otherlibs\highgui\window_w32.cpp(828) : error C2065: 'GCLP_HBRBACKGROUND' : undeclared identifier
C:\Opencv1.0\OpenCV\otherlibs\highgui\window_w32.cpp(972) : error C2065: 'GCLP_HCURSOR' : undeclared identifier
C:\Opencv1.0\OpenCV\otherlibs\highgui\window_w32.cpp(1253) : error C2065: 'GWLP_WNDPROC' : undeclared identifier
一直以来都在用vs.net所以一直没有这类问题。今天为了在一个低端的本本上安装vc6.0和opencv让我费很大的力气才弄明白。
其实是highgui目录下的window_w32.cpp宏定义出现的问题,
#if defined WIN64 || defined EM64T
上面这个宏判断其实应该是返回FALSE才对。但是由于6.0的编译的问题它这里就编程true了,因而执行了下面的宏定义
#define icvGetWindowLongPtr GetWindowLongPtr
#define icvSetWindowLongPtr( hwnd, id, ptr ) SetWindowLongPtr( hwnd, id, (LONG_PTR)(ptr) )
#define icvGetClassLongPtr GetClassLongPtr
#define CV_USERDATA GWLP_USERDATA
#define CV_WNDPROC GWLP_WNDPROC
#define CV_HCURSOR GCLP_HCURSOR
#define CV_HBRBACKGROUND GCLP_HBRBACKGROUND
GetClassLongPtr这些函数应该不是win32的程序,而是win64的程序,因此才会出错。
解决方法是把#if defined WIN64 || defined EM64T随便改成一个系统不认识的,没有定义过的宏就
行了。如: 改成#if defined WIN642 || defined EM64T 。或者干脆注释调上面的全部内容。
对于opencv1.0 版本改过之后就可以编译_make里面的opencv.dsw 里面的highgui.dsp了。对于
5.0beta版本,可能要先把OpenCV\otherlibs\_graphics\src下面的graphic_libs.dsw编译后才能编译
highgui.dsp(呵呵,今天把所以版本都试了一遍)
如果以上编译全部通过,可能还要配置一下环境变量,如:d:\Program Files\OpenCV\bin; 如果不配
置的话会出现找不到coxcore100.dll等文件的错误。vs.net下就不会有以上的麻烦。
如果又出现类似tiff,png,jpeg等错误,则需要编译opencv的附加库,目录在:
C:\Program Files\OpenCV\otherlibs\_graphics\src
相关文章推荐
- OPENCV的highgui工程在vc6.0下编译出错的解决
- OPENCV的highgui工程在vc6.0下编译出错的解决
- OpenCV2.2调用highgui函数总是出错,一种可能的解决方法
- OpenCv3.2+opencv_contrib扩展模块 +VS2015+CMake3.9解决编译出错的问题
- Ubuntu 编译opencv出错:‘GstMiniObjectClass’ does not name a type 解决方法
- 解决WINCE6.0新建工程编译出错的问题
- 新建MCV建立测试工程,编译出错的解决办法
- 解决WINCE6.0新建工程编译出错的问题
- vs2010建立win32 application 编译错误(用vc6.0建立此工程正常运行)解决方法
- 编译opencv出错的解决方法
- 解决WINCE6.0新建工程编译出错的问题
- Ubuntu14.4+CMake3.9+Opencv3.3 运行Seetaface编译出错解决
- 【Android】Opencv4Android 调用Highgui读取图片出错
- Vc6.0中的activeX工程在vs2012中组建出错的解决办法
- cmake编译opencv2.4.9出错解决办法
- 解决WINCE6.0新建工程编译出错的问题
- 计算机丢失opencv_highgui2410.dll 的解决办法
- vs2010建立win32 application 编译错误(用vc6.0建立此工程正常运行)解决方法
- 解决WINCE6.0新建工程编译出错的问题
- opencv编译问题:modules\highgui\src\window_w32.cpp:2023:81: error: 'BTNS_AUTOSIZE' was not declared