(OSG3.4.0)编译osgShadow项目时,ViewDependentShadowMap编译失败
E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1722): warning C4003: “min”宏的实参不足
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1722): error C2062: 意外的类型“unsigned int”
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1722): error C2334: “:”的前面有意外标记;跳过明显的函数体
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1734): error C2143: 语法错误 : 缺少“)”(在“}”的前面)
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1734): error C2143: 语法错误 : 缺少“}”(在“)”的前面)
在WIN7+VS2012环境下,使用32位平台,编译osgShadow项目时,ViewDependentShadowMap编译失败,提示:
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1734): error C2059: 语法错误:“)”
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1734): error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1734): error C2238: 意外的标记位于“;”之前
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1736): error C2628: “ConvexHull”后面接“double”是非法的(是否忘记了“;”?)
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1736): warning C4003: “max”宏的实参不足
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1736): error C2143: 语法错误 : 缺少“;”(在“<L_TYPE_raw>”的前面)
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1736): error C2059: 语法错误:“<L_TYPE_raw>”
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1736): error C2059: 语法错误:“)”
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1737): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1737): error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1751): error C2270: “minRatio”: 非成员函数上不允许修饰符
...
问题代码为:
double min(unsigned int index) const
{
double m = DBL_MAX;
for(Edges::const_iterator itr = _edges.begin();
itr != _edges.end();
++itr)
{
const Edge& edge = *itr;
if (edge.first[index]<m) m = edge.first[index];
if (edge.second[index]<m) m = edge.second[index];
}
return m;
}
double max(unsigned int index) const
{
double m = -DBL_MAX;
for(Edges::const_iterator itr = _edges.begin();
itr != _edges.end();
++itr)
{
const Edge& edge = *itr;
if (edge.first[index]>m) m = edge.first[index];
if (edge.second[index]>m) m = edge.second[index];
}
return m;
}
该怎么处理呢,谢谢大家。