数字图像处理与机器视觉随书代码在VS2012中编译报错的解决办法-转载
https://www.jianshu.com/p/2d376a82ba8c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
随书代码在VC6.0中可以正常编译运行,但是在VS2012环境下会报错,无法运行
报错如下:
1> c:\users\westring\desktop\dipdemo_vc6\imgprocess.cpp(1719): error C2668: “fabs”: 对重载函数的调用不明确
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\math.h(564): 可能是“long double fabs(long double)”
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\math.h(516): 或 “float fabs(float)”
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\math.h(118): 或 “double fabs(double)”
1> 尝试匹配参数列表“(int)”时
1>c:\users\westring\desktop\dipdemo_vc6\imgprocess.cpp(1805): error C2668: “fabs”: 对重载函数的调用不明确
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\math.h(564): 可能是“long double fabs(long double)”
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\math.h(516): 或 “float fabs(float)”
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\math.h(118): 或 “double fabs(double)”
1> 尝试匹配参数列表“(int)”时
1>c:\users\westring\desktop\dipdemo_vc6\imgprocess.cpp(1815): error C2668: “fabs”: 对重载函数的调用不明确
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\math.h(564): 可能是“long double fabs(long double)”
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\math.h(516): 或 “float fabs(float)”
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\math.h(118): 或 “double fabs(double)”
1> 尝试匹配参数列表“(int)”时
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\vector(1768): error C2039: “difference_type”: 不是“CImgProcess”的成员
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\vector(1768): error C2146: 语法错误: 缺少“,”(在标识符“difference_type”的前面)
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\vector(1768): error C2065: “difference_type”: 未声明的标识符
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\vector(1772): error C2955: “std::_Iterator012”: 使用类 模板 需要 模板 参数列表
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(344) : 参见“std::_Iterator012”的声明
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\vector(1774): error C2039: “size_type”: 不是“CImgProcess”的成员 1> c:\users\westring\desktop\dipdemo_vc6\imgprocess.h(125) : 参见“CImgProcess”的声明
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\vector(1774): error C2146: 语法错误: 缺少“;”(在标识符“_Sizet”的前面)
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\vector(1774): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\vector(1782): error C2061: 语法错误: 标识符“_Sizet”
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\vector(1789): error C2061: 语法错误: 标识符“_Sizet”
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\vector(1806): error C2146: 语法错误: 缺少“;”(在标识符“_Myoff”的前面)
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\vector(1806): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
解决方法是:
将报错的三处fabs函数替换为abs
在DIPDemoView.cpp中的OnFileRotate定义下,
将//swap<CImgProcess>(pdoc->m_Image, pdoc->m_OImage);
一行替换为 swap(pdoc->m_Image, pdoc->m_OImage);
即可编译通过.
作者:Westring
链接:https://www.jianshu.com/p/2d376a82ba8c
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
posted on 2019-07-05 09:33 crystal_rachel 阅读(296) 评论(0) 编辑 收藏 举报