OPENCV的highgui工程在vc6.0下编译出错的解决
2016-02-05 10:20
483 查看
【原文:http://www.cnblogs.com/oskycar/archive/2009/08/30/1556924.html】
最近在论坛里发现有很多人提出如下的问题:
怎么按照网站上那个安装方法安装了,但调试运行怎么会出错啊?
错误是:
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
相关文章推荐
- 基于Bluemix云平台的一个文本转语音应用
- 安装cocoapods出现psych-2.0.15 because its extensions are not built
- 从调试角度理解ActionContext、OgnlContext、OgnlValueStack的关系
- JAVA与GUI
- 使用UITableView纯代码模仿QQ聊天界面
- 解决UITextView上面一段空白(ios oc)
- Mosquitto安装、测试总结Fedora14
- iOS UIKit - UIWindow
- 热门搜索和历史搜索的设计思想
- 【poj2478-Farey Sequence】递推求欧拉函数-欧拉函数的几个性质和推论
- Match:Blue Jeans(POJ 3080)
- Speeding up Gradle builds
- leetcode:Range Sum Query 2D - Immutable
- [Unit Testing] Based on input value, spyOn function
- HDU 3415 Max Sum of Max-K-sub-sequence - dp&单调队列优化
- uestc 250 windy数 【数位dp】
- 通过 xcodebuild 来编译 iOS 工程,报 code signing identity not found
- request.getParameter("Name")
- Access query 使用方法
- HDU 3836 Equivalent Sets(强连通分量)