进入安装OpenCV路径,进入_make文件,看到了opencv.dsw 和 opencv.sln (不是opencv_directshow.dsw,它不包含cvaux.h), 前者在vc6.0版本编译,后者在vs2005中编译。
选择Win32 Debug进行编译,这一点我刚开安装时,一直没在意,自己的vc6.0软件环境有很多编译版本,什么i7等很多,导致了我编译一直没有成功,这是原因之一;
编译过程中有一个很语法错误,这是源码中自带的错误,这个我一直还没注意,怪不得没编译成功。也主要是要编译的文件比较多,还没分析好,这是没有成功的最重要原因。
链接:
粘贴:
据说这是个古老的bug
在cvaux.h文件中,
搜索关键字foreground_regions,
第1137行
CvMemStorage* storage; /*storage for 揻oreground_regions?/ \
CvSeq* foreground_regions /*foreground object contours*/
改为如下形式:
CvMemStorage* storage; /*storage for foreground_regions*/ \
CvSeq* foreground_regions /*foreground object contours*/
这样错误就消失了.开源的果然有bug呀.真是需要不断探索了
而且每一行后面的这些"\"是表下一行是上一行的接续.如
define可以替代多行的代码,例如MFC中的宏定义(非常的经典)
#define MACRO(arg1, arg2) do { \
/* declarations */ \
stmt1; \
stmt2; \
/* ... */ \
} while(0) /* (no trailing ; ) */
关键是要在每一个换行的时候加上一个"\"
哎, 都古老错误了,我还没注意到!
但是选择Rebuild All时,不知怎回事,highgui的动态链接库没有生成功。直接只对该类重新编译了,有了,至此都编译成功。终于可以进入调试了。
另外,如果你拷贝到了其他路径来完成的编译,当然要在vc6.0中指明库文件放置地方。
环境变量也要更改bin文件所在的路径。