VS2010和opencv249
最近调试一个MFC工程时出现如下错误:
1>ClCompile:
1> stdafx.cpp1>d:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afxtoolbar.h(171): error C2665: “cv::max”: 6 个重载中没有一个可以转换所有参数类型
1> d:\program files\opencv249\build\include\opencv2\core\mat.hpp(1328): 可能是“cv::MatExpr cv::max(const cv::Mat &,const cv::Mat &)”
1> d:\program files\opencv249\build\include\opencv2\core\mat.hpp(1329): 或 “cv::MatExpr cv::max(const cv::Mat &,double)”
1> d:\program files\opencv249\build\include\opencv2\core\mat.hpp(1330): 或 “cv::MatExpr cv::max(double,const cv::Mat &)”
1> 尝试匹配参数列表“(int, LONG)”时
1>d:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afxmenubar.h(161): error C2665: “cv::max”: 6 个重载中没有一个可以转换所有参数类型
1> d:\program files\opencv249\build\include\opencv2\core\mat.hpp(1328): 可能是“cv::MatExpr cv::max(const cv::Mat &,const cv::Mat &)”
1> d:\program files\opencv249\build\include\opencv2\core\mat.hpp(1329): 或 “cv::MatExpr cv::max(const cv::Mat &,double)”
1> d:\program files\opencv249\build\include\opencv2\core\mat.hpp(1330): 或 “cv::MatExpr cv::max(double,const cv::Mat &)”
1> 尝试匹配参数列表“(int, LONG)”时
1>d:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afxdesktopalertwnd.h(81): error C2665: “cv::max”: 6 个重载中没有一个可以转换所有参数类型
1> d:\program files\opencv249\build\include\opencv2\core\mat.hpp(1328): 可能是“cv::MatExpr cv::max(const cv::Mat &,const cv::Mat &)”
1> d:\program files\opencv249\build\include\opencv2\core\mat.hpp(1329): 或 “cv::MatExpr cv::max(const cv::Mat &,double)”
1> d:\program files\opencv249\build\include\opencv2\core\mat.hpp(1330): 或 “cv::MatExpr cv::max(double,const cv::Mat &)”
1> 尝试匹配参数列表“(int, UINT)”时
1>
1>生成失败。
原来是头文件放错位置了,讲#include <opencv2\opencv.hpp>等自己添加的头文件放到stdafx.h最后面,也就是#ifdef _UNICODE前面,如果放到
#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h> // MFC 对 Internet Explorer 4 公共控件的支持
#endif
前面就会出现如上问题