Qt Creator 中的 Glew 链接问题?

Posted

技术标签:

【中文标题】Qt Creator 中的 Glew 链接问题?【英文标题】:Glew Linking Problems in Qt Creator? 【发布时间】: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 功能。 【参考方案1】:

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

【讨论】:

【参考方案2】:

我遇到过类似的问题,之前我们通过在包含 &lt;SDL/SDL_opengl.h&gt; 之前定义 NO_SDL_GLEXT 来“解决”,所以:

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

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

【讨论】:

以上是关于Qt Creator 中的 Glew 链接问题?的主要内容,如果未能解决你的问题,请参考以下文章

使用 qt-creator 将库项目链接到 qt 控制台/小部件项目

Qt creator纯C项目

QT Creator 中的部署和静态打包将 QT 和 OpenCV 链接到单个可执行文件中

Qt Creator 2.7.0 (Qt 5.0.2) 中的 C++11 线程支持

Opencv2.3 和 Qt Creator 2.4.1 链接器错误

Qt Creator 中的 C++11 IDE 支持? [复制]