我试图通过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;
答案 0 :(得分:0)
解决您问题的唯一方法是不使用一个(GLEW或SDL_opengl),或者至少在任何源文件或头文件中都不包含GL/glew.h
和SDL/SDL_opengl.h
标头。
答案 1 :(得分:0)
我之前遇到类似的问题,我们通过在NO_SDL_GLEXT
之前定义<SDL/SDL_opengl.h>
来“解决”,所以:
#define NO_SDL_GLEXT
#include <SDL/SDL_opengl.h>
我说“已解决”,因为它使错误消失了,但我从未调查过可能出现的副作用或问题(我们之后不久就离开了SDL,再也没有真正使用它了)。也许值得一试......