Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt Creator中的Glew链接问题?_C++_Opengl_Compiler Errors_Sdl_Glew - Fatal编程技术网

C++ Qt Creator中的Glew链接问题?

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

我正试图通过QMake文件在Qt Creator中链接GLEW(使用SDL和OpenGL-note,而不是SDL的OpenGL实现),尽管我运气不太好。无论我做什么尝试,我似乎都会遇到同样的字符串错误,这些错误处理由一些
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功能。