Qt Creator中的Glew链接问题?

时间:2012-01-24 16:01:42

标签: c++ opengl compiler-errors sdl glew

我试图通过QMake文件在Qt Creator中链接GLEW(使用SDL和OpenGL - 注意,而不是SDL的OpenGL实现),尽管我没有太多运气。无论我尝试什么,我似乎都得到相同的字符串错误,这些错误处理来自少数conflicting declaration的{​​{1}}问题。我想知道的是为什么会发生这种情况,以及可以做些什么。

示例

typedef

这是因为我正在与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*)’

stdafx.h中

QT += core

LIBS += -lSDL -lSDL_image -lopengl32 -lGLU -lGLEW

stdafx.cpp

#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;

2 个答案:

答案 0 :(得分:0)

解决您问题的唯一方法是不使用一个(GLEW或SDL_opengl),或者至少在任何源文件或头文件中都不包含GL/glew.hSDL/SDL_opengl.h标头。

答案 1 :(得分:0)

我之前遇到类似的问题,我们通过在NO_SDL_GLEXT之前定义<SDL/SDL_opengl.h>来“解决”,所以:

#define NO_SDL_GLEXT
#include <SDL/SDL_opengl.h>

我说“已解决”,因为它使错误消失了,但我从未调查过可能出现的副作用或问题(我们之后不久就离开了SDL,再也没有真正使用它了)。也许值得一试......