数字图像处理与机器视觉随书代码在VS2012中编译报错的解决办法

随书代码在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(pdoc->m_Image, pdoc->m_OImage);

一行替换为 swap(pdoc->m_Image, pdoc->m_OImage);

即可编译通过.

你可能感兴趣的:(数字图像处理与机器视觉随书代码在VS2012中编译报错的解决办法)