Qt-Projekt erstellen

Alles rund um die Programmierung mit Qt
Antworten
Gapa
Beiträge: 63
Registriert: 4. Juli 2008 14:33
Kontaktdaten:

Qt-Projekt erstellen

Beitrag von Gapa »

Hallo mal wieder!

Ich arbeite mich im Tut. gerade durch das Spiel mit der Kanone...

Nun habe ich leider ein paar Probleme mit dem Aufbau bzw. der Struktur des Projekts:

Struktur:
Projekt: "Kanone"
Dateien des Projekts:
- Main.cpp
- CannonField.cpp
- LCDRange.cpp
- CannonField.h
- LCDRange.h

In den Projektoptionen habe ich die Parameter angepasst (alle Dateien des lib-Ordners von Qt4), und habe alle Verzeichnisse, welche includiert werden müssen, ebenfalls angepasst.

Meine 2 Fragen:

1. Wenn ich in einem Projekt (wie dieses hier) mehrere cpp-Dateien habe, muss ich diese dann nicht irgendwie miteinander verknüpfen? Oder werden diese automatisch miteinander verknüpft? Denn wenn ich in die Main.cpp die zwei anderen cpp-Dateien includiere, kommt folgende Fehlermeldung:
multiple definition of `CannonField::CannonField(QWidget*)'
first defined here
2. Wie verknüpfe ich dann diese 5 Dateien sinvoll miteinander? Denn wenn ich nur die Headerdateien (so wie es im Tut. vorgemacht wird) includiere, kommt folgende Fehlermeldung:
[Linker error] undefined reference to `vtable for CannonField'
[Linker error] undefined reference to `vtable for CannonField'
[Linker error] undefined reference to `vtable for CannonField'
[Linker error] undefined reference to `vtable for CannonField'
Ich habe aber alle Parameter richtig angepasst!! Was kann da der Linker noch falsch machen?? :x


Ich hoffe auf eine Antwort!

Viele Grüße
Gapa
Gestern war heute noch morgen!
sowas
Beiträge: 105
Registriert: 19. September 2006 16:02

Beitrag von sowas »

Hallo,

wenn ich die Frage richtig versanden habe, dann geht es nur um die Projekt Datei und folgendes ist richtig
---------
wenn qt normal installiert wurde und alle Dateien im einen Verzeichnis sind,
dann reichen folgende Schritte:
aufrufen: qmake -project
darafhin erstellt qmake automatisch eine Project-Datei
nun mit: qmake -o Makefile xxx.pro die Makefile erstellen.
zum Schluss make eingeben.
---------
Die Makefile sucht sich alle notwendige Dateien zusammen.
Gapa
Beiträge: 63
Registriert: 4. Juli 2008 14:33
Kontaktdaten:

Projekt erstellen

Beitrag von Gapa »

Hallo nochmal!

@sowas:
Also erst mal vielen Dankt für die Antwort.
Leider bringt diese mich nicht sonderlich weiter!

Ich habe es bisher noch nicht genau verstanden, wie ich qmake und dessen Paramter verwende (wenn ich qmake öffne, dann blitzt nur schnell die Konsole auf und verschwindet wieder...keine Chance zum Parameter eingeben!!). Deshalb wäre ich hier für Hilfe auch sehr dankbar!! :) Ich habe es mit ein paar Tricks und Hilfsprogrammen geschafft, die Qt-Libs /Verzeichnisse in meine IDE miteinzubeziehen, sprich:
Ich starte die IDE (Dev-Cpp), klicke auf NEU -> Projekt -> Qt-Application
Auf diese Weise konnte ich bisher alle meine Projekte erstellen. In den Projektoptionen habe ich dann noch ein paar Verzeichnisse / Parameter für den Linker angepasst, und schon lief das Projekt.

Doch sobald ich mehrere Cpp-Dateien in meinem Projekt habe, läuft alles schief! :x
Jetzt hier die Frage nochmal: Werden Cpp-Dateien in einem Projekt automatisch miteinander verknüpft??

Wenn ja:
Warum kommt dann folgende Fehlermeldung, wenn ich nur die Headerdateien in die Main.cpp includiere:
[Linker error] undefined reference to `vtable for CannonField'
[Linker error] undefined reference to `vtable for CannonField'
[Linker error] undefined reference to `vtable for CannonField'
[Linker error] undefined reference to `vtable for CannonField'
Wenn nein:
Warum kommt dann folgende Fehlermeldung, wenn ich die Cpp-Dateien mit in die Main.cpp includiere:
multiple definition of `CannonField::CannonField(QWidget*)'
first defined here
Ich wäre für eine Antwort wirklich sehr dankbar!

PS: Ein Tipp was ich bei qmake falsch mache wäre auch nicht schlecht (aber nur nebenbei!)!

Grüße
Gapa
Gestern war heute noch morgen!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Benutze qmake oder lerne wie man moc, uic usw. von Hand korrekt aufruft. Deine IDE kann das nicht da es Qt-spezifisch ist. Imho macht deine IDE nicht mehr als das von qmake erstellte Makefile aufzurufen und so den Compiliervorgang zu starten.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
sowas
Beiträge: 105
Registriert: 19. September 2006 16:02

Qt-Projekt erstellen

Beitrag von sowas »

Hallo,

vorab, ich arbeite mit Kubuntu früher Suse, beiden Programmen fehlen die Verzeichnisse Examples und Demos von Qt. Am besten ist Qt von Trolltech herunterladen und dann lokal kompilieren (dauert eine ganze Weile). Wie man es macht, wird in der install-Datei beschrieben, nur make install nicht ausfüren, dann verbleibt diese Version von Qt lokal. Wenn der Vorgang abgeschlossen ist, sind sämtiche Bespiele fertig und lauffähig. Man kann dann genau sehen wie die project Datei aussieht.

qmake wird nur in einer Konsole angewandt. Am besten unter Linux mit mehreren Desktops (6 oder 8) arbeiten. In einen Desktop die Konsole öffnen auf einer anderen den Qt-Assistenten usw.

Wenn man die standard Qt-Version verwendet, dann benötigt qmake keine Parameter, es aufgerufen wie ich in letzten gezeigt habe.

Viel spass
sowas
Beiträge: 105
Registriert: 19. September 2006 16:02

Qt-Projekt erstellen

Beitrag von sowas »

ich muss mich korrigieren in kubuntu sind die Verzeichnisse unter
/usr/share/doc/qt4-doc vorhanden allerdings in gezipten Dateien.
Man muss sie nur enpacken.
Ich habe diese Beispiele nicht kompiliert und kann nicht sagen ob die gesamten Blöcke mit eine Rutsch übersetzt werden, aber es funktioniert
wenn man ein Beispiel wie die Kannon nimmt und hiervon eine Kopie macht
und dann wie im ersten mail angegeben qmake usw aufrufen. qmake überschreibt dann die vorhandene Version von der xxx.pro Datei.
sowas
Beiträge: 105
Registriert: 19. September 2006 16:02

Beitrag von sowas »

weitere Ergänzung zu meiner mail, da Kubuntu beide Versionen von QT installiert, lauten die Befehle für Qt4:
qmake-qt4 -project
qmake-qt4 -o Makefile xxx.pro
reimer
Beiträge: 14
Registriert: 27. Juni 2008 19:21

Re: Qt-Projekt erstellen

Beitrag von reimer »

sowas hat geschrieben:qmake wird nur in einer Konsole angewandt. Am besten unter Linux mit mehreren Desktops...
... aber wie gesagt "am besten". Das geht natürlich genau so gut unter Windows. Ruf CMD auf und versuche den Umgang mit qmake zu erlernen. Als Shell empfehle ich dir MSYS.

In der Shell (angenommen du bist in deinem Projektverzeichnis) gibt du dann qmake -makefile -spec win gewuenschte_projektdatei.pro

Wenn du die Option makefile weg läßt, kann es sein, dass kein simples Makefile erzeugt wird. Ob win32 anstelle von win verwendet werden muß/soll, weiß ich jetzt nicht genau, bei mir lautet die immer macx-g++ :mrgreen:
Hulk2442
Beiträge: 115
Registriert: 10. Januar 2007 13:44

Beitrag von Hulk2442 »

Was ich niht ganz mitbekommen habe ist, mit welchem System arbeitest du?
Windows Linux? Und welche Variante davon?

Dann könnte man eine genaue schrittweise Anleitung geben!
reimer
Beiträge: 14
Registriert: 27. Juni 2008 19:21

Beitrag von reimer »

He used Dev-C++ => Windows.

Oops, vergessen auf Deutsch zu switchen...

Also welche Plattform man benutzt, sollte doch egal sein. Wie man qmake bedient ist überall gleich.
Hulk2442
Beiträge: 115
Registriert: 10. Januar 2007 13:44

Beitrag von Hulk2442 »

reimer hat geschrieben:He used Dev-C++ => Windows.

Oops, vergessen auf Deutsch zu switchen...

Also welche Plattform man benutzt, sollte doch egal sein. Wie man qmake bedient ist überall gleich.
Bei der Verwendung von qmake hast du recht!
Jedoch kommt es oft nicht einmal soweit weil die Pfade nicht oder nicht richtig gesetzt sind und somit auf eine alte Version oder gar nicht zugegriffen wird.

Die Setzung der Zustandspfade ist jedoch von System zu System unterschiedlich!

Und soweit ich bis jetzt mit gelesen habe tut er sich ein schwer ein „Pro-File“ und ein „Make-File“ zu erstellen was natürlich auch an den Pfaden schuld sein kann!
reimer
Beiträge: 14
Registriert: 27. Juni 2008 19:21

Beitrag von reimer »

Da er aber mit Dev-C++ keine Probleme mit Qt-Projekten zu haben scheint, gehe ich davon aus, dass die Pfade richtig gesetzt sind. Da er selbst geschrieben hat, dass er sich mit qmake nicht auskennt, gehe ich von nem Bedienungs- bzw. Konfigurationsproblem aus. Zumal er folgendes gemacht hat:
In den Projektoptionen habe ich die Parameter angepasst (alle Dateien des lib-Ordners von Qt4), und habe alle Verzeichnisse, welche includiert werden müssen, ebenfalls angepasst.
Hulk2442 hat geschrieben:Und soweit ich bis jetzt mit gelesen habe tut er sich ein schwer ein „Pro-File“ und ein „Make-File“ zu erstellen was natürlich auch an den Pfaden schuld sein kann!
Kannst du das etwas erläutern? Das Pro-File zu erstellen, ist ja unabhängig von irgendwelchen Pfaden. Wenn er kein Makefile erzeugen kann, hast du durchaus recht. Aber das sollte dann auch entsprechend moniert werden und nicht mit "Undefined reference"
Zuletzt geändert von reimer am 30. Juli 2008 17:49, insgesamt 1-mal geändert.
Hulk2442
Beiträge: 115
Registriert: 10. Januar 2007 13:44

Beitrag von Hulk2442 »

reimer hat geschrieben:Da er aber mit Dev-C++ keine Probleme mit Qt-Projekten zu haben scheint, gehe ich davon aus, dass die Pfade richtig gesetzt sind. Da er selbst geschrieben hat, dass er sich mit qmake nicht auskennt, gehe ich von nem Bedienungs- bzw. Konfigurationsproblem aus. Zumal er folgendes gemacht hat:
In den Projektoptionen habe ich die Parameter angepasst (alle Dateien des lib-Ordners von Qt4), und habe alle Verzeichnisse, welche includiert werden müssen, ebenfalls angepasst.
Hulk2442 hat geschrieben:Und soweit ich bis jetzt mit gelesen habe tut er sich ein schwer ein „Pro-File“ und ein „Make-File“ zu erstellen was natürlich auch an den Pfaden schuld sein kann!
Kannst du das etwas erläutern? Das Pro-File zu erstellen, ist ja unabhängig von irgendwelchen Pfaden (sofern Qt richtig eingebunden ist im System). Wenn er kein Makefile erzeugen kann, hast du durchaus recht. Aber das sollte dann auch entsprechend moniert werden und nicht mit "Undefined reference"
Gebe mich geschalgen 8)
reimer
Beiträge: 14
Registriert: 27. Juni 2008 19:21

Beitrag von reimer »

Hulk2442 hat geschrieben:Gebe mich geschalgen 8)
Bild
Antworten