OPENCV的highgui工程在vc6.0下编译出错的解决
来源:互联网 发布:自学ug编程 编辑:程序博客网 时间:2024/05/21 12:02
【原文: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
- OPENCV的highgui工程在vc6.0下编译出错的解决
- OPENCV的highgui工程在vc6.0下编译出错的解决
- winpcap网络编程在vc6下编译出错的原因
- GlobalMemoryStatusEx()在VC6.0下的编译
- vc6下批量编译工程的方法
- opencv:简单的HighGui
- 解决WINCE6.0新建工程编译出错的问题
- 解决WINCE6.0新建工程编译出错的问题
- 解决WINCE6.0新建工程编译出错的问题
- OpenCV在VC6.0下的安装与配置
- OpenCV库highgui函数在VS2012下的内存泄露问题!
- Vc6.0中的activeX工程在vs2012中组建出错的解决办法
- SDL在vc6下的编译
- 在VC6.0环境下SNMP sample的编译方法
- cximage在VC6.0下编译错误的解决方法
- vc6及vs2005的SolidWorks工程在vs2008编译
- 解决VC6.0在win8下的兼容性问题
- VC6.0下的OpenCV设置方法
- 取消生产订单的报工
- 如何去掉Myeclipse对JS等文件的验证
- Python装饰器与面向切面编程
- swing入门教程(二) 简单的swing小部件
- 自定义View之onMeasure()
- OPENCV的highgui工程在vc6.0下编译出错的解决
- hive实战演练:手机流量统计
- SAP接口编程-RFC系列08 : 获取SAP DDIC的数据字段
- OGL浅学_雾效果
- c#之显示实现接口
- 【Boost】boost库中的小工具enable_shared_from_this
- Android开发学习之路--UI之初体验
- PAT 1001
- swift开源项目精选(已经造好的轮子)