C++ Qt Creator中的Glew链接问题?
我正试图通过QMake文件在Qt Creator中链接GLEW(使用SDL和OpenGL-note,而不是SDL的OpenGL实现),尽管我运气不太好。无论我做什么尝试,我似乎都会遇到同样的字符串错误,这些错误处理由一些C++ Qt Creator中的Glew链接问题?,c++,opengl,compiler-errors,sdl,glew,C++,Opengl,Compiler Errors,Sdl,Glew,我正试图通过QMake文件在Qt Creator中链接GLEW(使用SDL和OpenGL-note,而不是SDL的OpenGL实现),尽管我运气不太好。无论我做什么尝试,我似乎都会遇到同样的字符串错误,这些错误处理由一些typedefs引起的冲突声明问题。我想知道的是为什么会发生这种情况,以及可以采取哪些措施 示例 /usr/include/SDL/SDL_opengl.h:4855: error: conflicting declaration ‘typedef void (* PFNGLFR
typedef
s引起的冲突声明
问题。我想知道的是为什么会发生这种情况,以及可以采取哪些措施
示例
/usr/include/SDL/SDL_opengl.h:4855: error: conflicting declaration ‘typedef void (* PFNGLFRAGMENTLIGHTFVSGIXPROC)(GLenum, GLenum, const GLfloat*)’
/usr/include/GL/glew.h:12201: error: ‘PFNGLFRAGMENTLIGHTFVSGIXPROC’ has a previous declaration as ‘typedef void (* PFNGLFRAGMENTLIGHTFVSGIXPROC)(GLenum, GLenum, GLfloat*)’
QT += core
LIBS += -lSDL -lSDL_image -lopengl32 -lGLU -lGLEW
这是因为我正在链接SDL(看看它是如何支持OpenGL的),还是这里发生了其他事情
Qmake文件
/usr/include/SDL/SDL_opengl.h:4855: error: conflicting declaration ‘typedef void (* PFNGLFRAGMENTLIGHTFVSGIXPROC)(GLenum, GLenum, const GLfloat*)’
/usr/include/GL/glew.h:12201: error: ‘PFNGLFRAGMENTLIGHTFVSGIXPROC’ has a previous declaration as ‘typedef void (* PFNGLFRAGMENTLIGHTFVSGIXPROC)(GLenum, GLenum, GLfloat*)’
QT += core
LIBS += -lSDL -lSDL_image -lopengl32 -lGLU -lGLEW
stdafx.h
#pragma once
/*************/
/* #includes */
/*************/
//GL / SDL
#include <GL/glew.h>
#define GLEW_STATIC
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glext.h>
#include <SDL/SDL.h>
#include <SDL/SDL_opengl.h>
//STD
#include <iostream>
#include <fstream>
//Qt
#include <QListIterator>
#include <QMapIterator>
#include <QVector4D>
#include <QColor>
/********************/
/* Using Statements */
/********************/
using std::cout;
using std::endl;
using std::cin;
using std::fstream;
您的问题的唯一解决方案是不在任何源文件或头文件中使用一个(GLEW或SDL_opengl),或者至少不同时包含
GL/GLEW.h
和SDL/SDL_opengl.h
头文件。在包含
之前,我有过类似的问题,我们通过定义NO_SDL_GLEXT
来“解决”,因此:
#define NO_SDL_GLEXT
#include <SDL/SDL_opengl.h>
#定义无SDL#GLEXT
#包括
我说“解决了”,因为它消除了错误,但我从未调查过可能的副作用或问题(我们在那之后不久就离开了SDL,再也没有真正使用过它)。也许值得一试…这些是编译错误-不是链接器错误,谢谢。下次我会记住这一点。你为什么要包括SDL?Qt做SDL所能做的一切。我正在构建一个游戏引擎,Qt并不是专门用来做这件事的。实际上,Qt可以像SDL一样为您提供OpenGL上下文。在这两种情况下,实际的发动机部件是分开的。如果您使用的是Qt,那么也可以使用它的OpenGL功能。