Q_OBJECT - Probleme eines Einsteigers

Alles rund um die Programmierung mit Qt
Antworten
Omega Psi
Beiträge: 4
Registriert: 22. April 2006 16:07
Kontaktdaten:

Q_OBJECT - Probleme eines Einsteigers

Beitrag von Omega Psi »

Ich komme eigentlich aus der Java-Programmierung und will nun in C++ und QT einsteigen. Doch schon die ersten Gehversuche erscheinen wie "barfuss auf Glasscherben".

Ich habe versucht, die OpenGL-Tutorials der des Indipendent QT-Tutorials durchzuackern. Solange ich nicht auf das Q_OBJECT Makro angwiesen bin, funktioniert auch alles super. Ich verwende Microsoft Visual Studio .NET 2003 und QT 3.3.3 Educational.

Hier mein Quellcode (die Implementierungen der Funktion paintGL() etc habe ich aus Platzgründen weggelassen. Wie bereits erwähnt, compiliert alles, was nicht auf das Q_OBJECT-Makro angwiesen ist. In den entsprechenden Beispielen habe ich die entsprechenden Stellen auskommentiert):
Datei: myopenglwidget.h

Code: Alles auswählen


#include <qgl.h>
#include <qtimer.h>

#pragma once

class MyOpenGLWidget : public QGLWidget {
	Q_OBJECT
public:
	MyOpenGLWidget(int timerInterval=0, QWidget *parent=0, char *name=0);
	~MyOpenGLWidget(void);
protected:
	virtual void initializeGL()=0;
	virtual void paintGL()=0;	
	virtual void resizeGL(int height, int width)=0;	
	virtual void timeOut();
protected slots:
	virtual void timeOutSlots();
private:
	QTimer *timer;
};
Datei: myopenglwidget.cpp

Code: Alles auswählen

#include ".\myopenglwidget.h"
#using <mscorlib.dll>

MyOpenGLWidget::~MyOpenGLWidget(void) {
}
Datei: main.h

Code: Alles auswählen

#pragma once

#include <qapplication.h>

class Main {
public:
	Main(void);
	~Main(void);
};
Datei: main.cpp

Code: Alles auswählen

#include ".\main.h"
#include ".\myopenglwidget.h"
#using <mscorlib.dll>

Main::Main(void) {
}

Main::~Main(void) {
}

int main (int argc, char **argv) {

	QApplication application(argc, argv);
	MyOpenGLWidget *glwidget = new MyOpenGLWidget();
	application.setMainWidget(glwidget);
	glwidget->show();
	return application.exec();
}
Datei: QT_OPENGL.pro

Code: Alles auswählen

HEADERS += Main.h MyOpenGLWidget.h
SOURCES += Main.cpp MyOpenGLWidget.cpp
Desweiteren gebe ich folgende Zeilen in die Console ein:

Code: Alles auswählen

..> qmake -project -o QT_OPENGL.pro "QT=core gui" "TARGET=QT_OPENGL" 
..> qmake -tp vc -o QT_OPENGL 
..> qmake 
..> nmake
Es wird anscheinden erfolgreich die Datei moc_MyOpenGLWidget.cpp zusammen mit dem Makefile erstellt. Das Mal lief alles reibungslos, mittlerweile bekomme ich aber die Fehlermeldung:
NMAKE: fatal error U1077 'cl': Rueckgabe-Code '0x1'
Stop


Bin mit meinem Latein und Ressourcen nun am Ende angelangt, hat jemand vielleicht eine Hilfestellung oder eine Lösung für mich?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

NMAKE: fatal error U1077 'cl': Rueckgabe-Code '0x1'
Stop
Da müssen davor noch andere Fehlermeldungen gekommen sein.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Omega Psi
Beiträge: 4
Registriert: 22. April 2006 16:07
Kontaktdaten:

Beitrag von Omega Psi »

Hier mal abgetippt, was die Konsole ausgibt:

Code: Alles auswählen

Microsoft (R) Progr...
Copyright (C) Micro...

    cl -c -nologo -Zm200 -W3 -w34100 -w34189 -MD -01 -GX -DUNICODE _DWIN32 -DQT_DLL -DQT_THREADSUPPOR -DQT_NO_DEBUG -I"." -I"C:\Qt\3.3.3Educational\include" -I"C:QT_WORKSPACE\QT_OPENGL" -I"C:\Qt\3.3.3Educational\mkspecs\win32-msvc.net" -Fo @C:\DOKUME~1\Admin\LOKALE~1\Temp\nm4C.tmp
Der Befehl "cl" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
NMAKE : fatal error U1077: 'cl': Rückgabe '0x1'
Stop.
Nachtrag: Die Beispiele, bei denen ich nicht auf Q_OBJECT angewiesen war, habe ich direkt über die Visual studio IDE kompiliert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Omega Psi hat geschrieben: Der Befehl "cl" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
cl.exe ist nicht im PATH
Hast du auch 'Visual Studio 2003 command Prompt' anstatt cmd.exe benutzt? (Siehe Startmenu)
cl.exe ist der eigentliche Compiler und der sollte schon vorhanden sein.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Omega Psi
Beiträge: 4
Registriert: 22. April 2006 16:07
Kontaktdaten:

Beitrag von Omega Psi »

Danke für den Hinweis!

Werde das gleich mal ausprobieren!
Omega Psi
Beiträge: 4
Registriert: 22. April 2006 16:07
Kontaktdaten:

Beitrag von Omega Psi »

Ich hatte in der Tat nur die cmd.exe Shell benutzt. Leider treten nun immer noch Kompilierfehler auf:

Code: Alles auswählen

Fatal error C1190: Verwalteter abziehlender Code erfordert '#using <mscorelib.dll>' und den '/CLR'-Schalter
Code wird generiert...
NMAKE:fatal error U1077: 'cl':Rueckgab-Code '0x2'
Stop.
Die mscorelib.dll ist doch aber eingebunden...

Falls mir da noch jemand helfen kann, ich bin echt super dankbar!
Antworten