Seite 1 von 1
Qt-Projekt erstellen
Verfasst: 15. Juli 2008 21:20
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??
Ich hoffe auf eine Antwort!
Viele Grüße
Gapa
Verfasst: 16. Juli 2008 11:43
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.
Projekt erstellen
Verfasst: 17. Juli 2008 18:58
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!
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
Verfasst: 17. Juli 2008 21:43
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.
Qt-Projekt erstellen
Verfasst: 19. Juli 2008 23:21
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
Qt-Projekt erstellen
Verfasst: 19. Juli 2008 23:46
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.
Verfasst: 20. Juli 2008 21:34
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
Re: Qt-Projekt erstellen
Verfasst: 28. Juli 2008 10:52
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++

Verfasst: 29. Juli 2008 14:44
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!
Verfasst: 29. Juli 2008 19:19
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.
Verfasst: 30. Juli 2008 06:35
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!
Verfasst: 30. Juli 2008 10:18
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"
Verfasst: 30. Juli 2008 12:48
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)
Verfasst: 30. Juli 2008 17:47
von reimer
Hulk2442 hat geschrieben:Gebe mich geschalgen 8)
