feng_yunl 发表于 2014-2-28 16:39:10

osg3.0.1 vs2010 编译问题

osg3.0.1 vs2010 编译以后出现以下的错误:
4>AlphaFunc.cpp
4>D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xlocale(323): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1152): error C2144: 语法错误:“void”的前面应有“;”
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1152): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1153): error C2144: 语法错误:“void”的前面应有“;”
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1153): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1153): error C2086: “int WINGDIAPI”: 重定义
4>          C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1152) : 参见“WINGDIAPI”的声明
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1154): error C2146: 语法错误: 缺少“;”(在标识符“GLboolean”的前面)
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1154): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1154): error C2086: “int WINGDIAPI”: 重定义
4>          C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1152) : 参见“WINGDIAPI”的声明
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1155): error C2144: 语法错误:“void”的前面应有“;”
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1155): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1155): error C2086: “int WINGDIAPI”: 重定义
4>          C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1152) : 参见“WINGDIAPI”的声明
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1156): error C2144: 语法错误:“void”的前面应有“;”
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1156): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1156): error C2086: “int WINGDIAPI”: 重定义
4>          C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1152) : 参见“WINGDIAPI”的声明
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1157): error C2144: 语法错误:“void”的前面应有“;”
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1157): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1157): error C2086: “int WINGDIAPI”: 重定义
4>          C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1152) : 参见“WINGDIAPI”的声明
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1158): error C2144: 语法错误:“void”的前面应有“;”
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1158): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1158): error C2086: “int WINGDIAPI”: 重定义
4>          C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1152) : 参见“WINGDIAPI”的声明
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1159): error C2144: 语法错误:“void”的前面应有“;”
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1159): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1159): error C2086: “int WINGDIAPI”: 重定义
4>          C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1152) : 参见“WINGDIAPI”的声明
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1160): error C2144: 语法错误:“void”的前面应有“;”
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1160): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1160): error C2086: “int WINGDIAPI”: 重定义
4>          C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1152) : 参见“WINGDIAPI”的声明
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1161): error C2144: 语法错误:“void”的前面应有“;”
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1161): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1161): error C2086: “int WINGDIAPI”: 重定义
4>          C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1152) : 参见“WINGDIAPI”的声明
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1162): error C2144: 语法错误:“void”的前面应有“;”
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1162): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1162): error C2086: “int WINGDIAPI”: 重定义
4>          C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1152) : 参见“WINGDIAPI”的声明
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1163): error C2144: 语法错误:“void”的前面应有“;”
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1163): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1163): error C2086: “int WINGDIAPI”: 重定义
4>          C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1152) : 参见“WINGDIAPI”的声明
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1164): error C2144: 语法错误:“void”的前面应有“;”
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1164): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1164): error C2086: “int WINGDIAPI”: 重定义
4>          C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1152) : 参见“WINGDIAPI”的声明
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1165): error C2144: 语法错误:“void”的前面应有“;”
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1165): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1165): error C2086: “int WINGDIAPI”: 重定义
4>          C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1152) : 参见“WINGDIAPI”的声明
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1166): error C2144: 语法错误:“void”的前面应有“;”
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1166): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1166): error C2086: “int WINGDIAPI”: 重定义
4>          C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1152) : 参见“WINGDIAPI”的声明
4>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL/gl.h(1167): error C2144: 语法错误:“void”的前面应有“;”

在OpenSceneGraph-3.0.1\include\osg\GL 文件下加上了 #include <Windows.h>头文件,又出现以下问题

2>d:\lib\openscenegraph\openscenegraph-3.0.1\src\osg\Matrix_implementation.cpp(70): warning C4003: “min”宏的实参不足
2>d:\lib\openscenegraph\openscenegraph-3.0.1\src\osg\Matrix_implementation.cpp(70): error C2589: “(”:“::”右边的非法标记
2>d:\lib\openscenegraph\openscenegraph-3.0.1\src\osg\Matrix_implementation.cpp(70): error C2059: 语法错误:“::”
2>d:\lib\openscenegraph\openscenegraph-3.0.1\src\osg\Matrix_implementation.cpp(71): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
2>d:\lib\openscenegraph\openscenegraph-3.0.1\src\osg\Matrix_implementation.cpp(76): error C2181: 没有匹配 if 的非法 else

应该是min()宏冲突了,改如何解决这个问题。
页: [1]
查看完整版本: osg3.0.1 vs2010 编译问题