【发布时间】:2012-01-24 16:01:41
【问题描述】:
我正在尝试通过 QMake 文件在 Qt Creator 中链接 GLEW(使用 SDL 和 OpenGL - 注意,不是 SDL 的 OpenGL 实现),尽管我运气不佳。无论我尝试什么,我似乎都会遇到相同的字符串错误,这些错误处理源自一些typedefs 的conflicting declaration 问题。我想知道为什么会发生这种情况,以及可以采取哪些措施。
示例
/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*)’
这是因为我正在链接 SDL(看看它如何支持 OpenGL),还是这里发生了其他事情?
Qmake 文件
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;
stdafx.cpp
#define GL_GLEXT_PROTOTYPES
【问题讨论】:
-
这些是编译错误 - 不是链接器错误
-
啊,谢谢。下次我会记住这一点。
-
为什么要包含 SDL? Qt 做了 SDL 可以做的所有事情。
-
我正在构建一个游戏引擎,而 Qt 并不适合。
-
实际上,Qt 可以像 SDL 一样为您提供 OpenGL 上下文。在这两种情况下,实际的发动机部件都是分开的。如果您使用的是 Qt,不妨使用它的 OpenGL 功能。
标签: c++ opengl compiler-errors sdl glew