Seite 1 von 1

Qt spricht nicht OpenGL

Verfasst: 18. Mai 2006 13:08
von MadsMaus
Hallo,

ich versuche auf meinem Laptop QT mit OpenGL-Unterstützung zu installieren und stoße sowohl unter Linux, als auch unter Windows auf einige Probleme. Alle bisherigen Tipps aus anderen Beiträgen, haben noch nicht geholfen das irgendwie zum Laufen zu kriegen.

Unter Windows kommt es mir so vor, als ob er dort gar nichts findet, da er nicht mal die Datentypen von OpenGL kennt.

Unter Linux krieg ich eine Fehlermeldung, dass er -lXext nicht finden kann, obwohl alle sourcen installiert sind und ich die entsprechenden Informationen beim Konfigurieren übergebe.

Irgendeiner eine Vorstellung, was ich noch probieren könnte, dass es zumindest unter einem Betriebssystem läuft? Bin für Hilfe sehr dankbar :)


Hier die genaue Fehlermeldung unter Windows:
g++ -c -g -g -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"C:/Qt/4.1.2/include/QtCore" -I"C:/Qt/4.1.2/include/QtGui" -I"C:/Qt/4.1.2/include" -I"C:/Qt/4.1.2/include/ActiveQt" -I"debug" -I"." -I"C:/Qt/4.1.2/mkspecs/default" -o debug\glwidget.o glwidget.cpp
glwidget.cpp:25:24: QtOpenGL: No such file or directory
In file included from glwidget.cpp:29:
glwidget.h:27:25: QGLWidget: No such file or directory
In file included from glwidget.cpp:29:
glwidget.h:30: error: invalid use of undefined type `struct QGLWidget'
C:/Qt/4.1.2/include/QtGui/../../src/gui/image/qpixmap.h:205: error: forward declaration of `struct QGLWidget'
glwidget.h:61: error: `GLuint' does not name a type
glwidget.h:62: error: variable or field `quad' declared void
glwidget.h:62: error: expected `;' before '(' token
glwidget.h:64: error: variable or field `extrude' declared void
glwidget.h:64: error: expected `;' before '(' token
[...]
glwidget.cpp:211: error: `GLdouble' was not declared in this scope
glwidget.cpp:212: error: initializer expression list treated as compound expression
glwidget.cpp:212: error: expected `,' or `;' before '{' token
glwidget.cpp:227:6: warning: no newline at end of file
mingw32-make[1]: *** [debug\glwidget.o] Error 1
mingw32-make[1]: Leaving directory `G:/programmierung/qt'
mingw32-make: *** [debug] Error 2

Verfasst: 28. Mai 2006 17:51
von Sym
Hallo,

ich habe das Problem auch unter Qt/Mac. Leider gibt die Installationsanweisung nicht genug heraus. Wo steht, was ich wie linken muss?

Verfasst: 28. Mai 2006 18:41
von FlorianBecker
-lXext fehlt, das ist klar und eindeutig. die Datei libXext.so oder libXext.a fehlt. Such mal in den Paketen deiner Distribution.

Bei Windows hast du vergessen OpenGL von Qt zu definieren in der pro Datei

QT += opengl

Ich nehme an, das wird deine Probleme komplett lösen.

Verfasst: 29. Mai 2006 00:25
von Sym
FlorianBecker hat geschrieben:QT += opengl
Danke, genau das fehlte bei mir.

Verfasst: 6. Juli 2006 20:24
von Sphinx
Ich habe das selbe Problem wie MadsMaus unter Windows allerdings unter linux (ubuntu dapper drake 6.06) Ich versuche, das hellogl Beispiel zu qt4 zu compilieren: Die Fehlermeldung sieht so aus:

hellogl$ make
g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I/usr/X11R6/include -I. -I. -o glwidget.o glwidget.cpp
glwidget.cpp:25:24: Fehler: QtOpenGL: No such file or directory
In Datei, eingefügt von glwidget.cpp:29:
glwidget.h:27:25: Fehler: QGLWidget: No such file or directory
glwidget.h:30: Fehler: expected class-name before »{« token
[usw]

Kann mir jemand sagen, ob ich qt4 selbst compilieren muss, damit openglsupport vorhanden ist, oder was ich noch installieren muss, damit es tut? Die QtOpenGL Dateien sind jedenfalls im include Ordner vorhanden, und das Compilieren von nicht opengl Programmen funktioniert auch. Kann mir jemand sagen, woran es liegt? Danke schonmal

Verfasst: 1. Dezember 2006 00:42
von KravenZ
Hi Leute,

Hab mal wieder ien Probelm und zwar folgendes. Ich habe eine QT Anwendung erstellt und ein OpenGl Widget reingepackt. nur wollte ich OpenGL Funktionen benutzen aber ich erhalte immer die Fehlermeldung... undefined reference ...

Hier ist meine Widgetklasse:

Code: Alles auswählen

#ifndef _OGL_WIDGET_H_
#define _OGL_WIDGET_H_
#include <qgl.h>

namespace SWP0607 {


class OGLWidget : public QGLWidget
{
    	Q_OBJECT
    

public:
    	//! Default constructor
    	OGLWidget( QWidget* parent = 0, const char* name = 0 );

    	//! Destructor
    	~OGLWidget(); 

protected:
	void initializeGL();
	void resizeGL(int w, int h);
	void paintGL();

private:
	
};

}

#endif 

Code: Alles auswählen

#include <GL/gl.h>
//#include <GL/glu.h>
//#include <GL/glx.h>
//#include <GL/glaux.h>
#include "OGLWidget.hh"


namespace SWP0607 {

OGLWidget::OGLWidget( QWidget* parent, const char* name )
    : QGLWidget( parent, name )
{

}


OGLWidget::~OGLWidget()
{

}

void OGLWidget::initializeGL()
{
         glClearColor(0.0f, 0.0f, 0.0f, 0.0f); 
}

void OGLWidget::resizeGL(int w, int h)
{

}

void OGLWidget::paintGL()
{

}

}
 
Ich denke mal dass ich irgendeine Library linken muss oder?
Nur leider habe ich keine genaue Ahnung welche und was ich noch weinger weiss ist wie man mit qmake Librarys linken kann. Dachte erstmal, dass es fast alles automatisch macht aber dem ist anscheinend nicht so. Auf der Trolltech seite wurde ich auch nicht fündig. Da stand auch etwas davon dass QT OpenGl automatisch erkennt hmm...
Weisst vielleicht einer wie das geht?

Verfasst: 1. Dezember 2006 08:40
von Sym
Kannst Du die Fehlermeldung mal posten?

Verfasst: 1. Dezember 2006 08:50
von Christian81
Und vor allem - warum wird nicht ein neuer Thread geöffnet anstatt einen 4 Monaten alten Thread zu hijacken? :twisted:

-> closed !