QtOpengl 与 mac 上的 Opengl 框架冲突
Posted
技术标签:
【中文标题】QtOpengl 与 mac 上的 Opengl 框架冲突【英文标题】:QtOpengl conflict with Opengl framwork on mac 【发布时间】:2016-07-13 11:35:50 【问题描述】:我正在尝试将 cocos2d-x 3.12 和 Qt 5.7 合并在一起,并且在链接时不断收到冲突错误消息:
In file included from Qt5.7.0/5.7/clang_64/lib/QtOpenGL.framework/Headers/QGLWidget:1:
In file included from Qt5.7.0/5.7/clang_64/lib/QtOpenGL.framework/Headers/qgl.h:45:
In file included from Qt5.7.0/5.7/clang_64/lib/QtGui.framework/Headers/qopengl.h:124:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/OpenGL.framework/Headers/gl3.h:2704:21: error: conflicting types for 'glDepthRange'
GLAPI void APIENTRY glDepthRangef (GLclampf n, GLclampf f);
^
demo/cocos2d-x/cocos/platform/mac/CCGL-mac.h:43:41: note: expanded from macro 'glDepthRangef'
#define glDepthRangef glDepthRange
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/OpenGL.framework/Headers/gl3.h:1662:21: note: previous declaration is here
GLAPI void APIENTRY glDepthRange (GLclampd near, GLclampd far);
我试图删除 .pro 文件中的 Opengl 框架,如下所示:
QT += core gui opengl
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = QtApplication
TEMPLATE = app
#INCLUDEPATH += /usr/local/include
#LIBS += -L/usr/local/lib/ -lGLEW
LIBS += -L/usr/local/lib/ -lz
LIBS += -L/usr/local/lib/ -lcurl
LIBS += -framework Cocoa
LIBS += -framework Foundation
LIBS += -framework OpenAL
LIBS += -framework IOKit
LIBS += -framework CoreVideo
LIBS += -framework OpenGL
但它不起作用,仍然是同样的错误。
任何建议将不胜感激,谢谢:)
【问题讨论】:
看起来像一个 Qt 错误,但您确实需要显示一个最小的main.cpp
来重现它。
【参考方案1】:
我认为这个错误是由于 Qt 覆盖 glew.h 或 GL.h 提供的 OpenGL 相关宏定义的策略引起的。其他人试图处理这个并遇到类似的问题(例如GLEW and Qt5 redefinition of headers)。解决方法是避免在同一个文件中包含 GL.h/glew.h 和任何与 OpenGL 相关的 Qt 标头。
【讨论】:
以上是关于QtOpengl 与 mac 上的 Opengl 框架冲突的主要内容,如果未能解决你的问题,请参考以下文章