今天升级了一下公司的项目 vs2013 qt5.9.0 osg 3.4.1 升级到 vs2017 qt5.12.10 osg3.6.5,升级后编译的时候报错
error C2062: 意外的类型“__int64”
error C3805: “类型”: 意外标记,应输入“}”或者“,”
error C2039: “UNDEFINED”: 不是“osg::Uniform”的成员
点击后发现是在Uniform 文件的一个枚举INT64 对比老版本的文件发现没有此枚举
所以考虑可能有些文件和这个枚举冲突导致,后来通过慢慢的注释掉其他头文件引用,排查到引用的一个第三方库中的头文件中
有一个宏导致的冲突#define INT64 __int64
对此的解决办法,可以调整头文件的包含顺序,可以保证编译通过,但不清楚会不会给程序埋下隐患
思考:尽量不要在头文件中使用宏
在将公司项目从VS2013+Qt5.9.0+osg3.4.1升级到VS2017+Qt5.12.10+osg3.6.5后,遇到了编译错误,主要包括类型解析错误和枚举冲突。问题源于第三方库中定义的宏#define INT64 __int64与osg::Uniform文件中的枚举INT64冲突。通过调整头文件包含顺序解决了编译问题,但这种方法可能存在潜在隐患。建议避免在头文件中使用宏以减少类似问题的发生。
2954

被折叠的 条评论
为什么被折叠?



