(OSG3.4.0)编译osgShadow项目时,ViewDependentShadowMap编译失败

wenqiang96 2017-11-04 11:54:10
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;
}
该怎么处理呢,谢谢大家。
...全文
295 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-11-06
  • 打赏
  • 举报
回复
偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。” 的方法解决的。
wenqiang96 2017-11-06
  • 打赏
  • 举报
回复
参考另外一个帖子得到了解决方法,使用预处理器来屏蔽min和max: 项目属性 ——> C/C++ ——> 预处理器 ——> 预处理器定义 ——>加入NOMINMAX, 具体见http://blog.csdn.net/wangshubo1989/article/details/50597178。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧