Hallo Mates,
heute kam endlich mein bestelltes Buch an. KDE und QT Programmieren.
Leider klappt das erste Listing nicht:
// First Program
// in QT
#include
Den Fehler vergessen:
Sagt das jemandem was? sascha@linux-eh47:~> gcc -L/usr/lib64/ -IQtGui -I/usr/include/QtGui hello-qt.cpp -o testapp /tmp/ccBSgZ6V.o: In function `main': hello-qt.cpp:(.text+0x24): undefined reference to `QApplication::QApplication(int&, char**, int)' hello-qt.cpp:(.text+0x5a): undefined reference to `operator new(unsigned long)' hello-qt.cpp:(.text+0x74): undefined reference to `QLabel::QLabel(QString const&, QWidget*, QFlagsQt::WindowType)' hello-qt.cpp:(.text+0xa8): undefined reference to `operator delete(void*)' hello-qt.cpp:(.text+0xf1): undefined reference to `QApplication::exec()' hello-qt.cpp:(.text+0xfc): undefined reference to `QApplication::~QApplication()' hello-qt.cpp:(.text+0x120): undefined reference to `QApplication::~QApplication()' /tmp/ccBSgZ6V.o: In function `QString::QString(char const*)': hello-qt.cpp:(.text._ZN7QStringC1EPKc[QString::QString(char const*)]+0x1a): undefined reference to `QString::fromAscii_helper(char const*, int)' /tmp/ccBSgZ6V.o: In function `QString::~QString()': hello-qt.cpp:(.text._ZN7QStringD1Ev[QString::~QString()]+0x2a): undefined reference to `QString::free(QString::Data*)' /tmp/ccBSgZ6V.o:(.eh_frame+0x13): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
-- Sincerely yours Sascha Manns openSUSE Marketing Team openSUSE Build Service openSUSE Features Screening Team Web: http://saschamanns.gulli.to Project-Blog: http://lizards.opensuse.org/author/saigkill Private-Blog: http://saschasbacktrace.blogspot.com
Hallo, Am Son, 07 Jun 2009, Sascha 'saigkill' Manns schrieb:
Den Fehler vergessen:
Sagt das jemandem was? sascha@linux-eh47:~> gcc -L/usr/lib64/ -IQtGui -I/usr/include/QtGui hello-qt.cpp -o testapp /tmp/ccBSgZ6V.o: In function `main': hello-qt.cpp:(.text+0x24): undefined reference to `QApplication::QApplication(int&, char**, int)'
Du mußt auch gegen QtCore (qt-mt/qt bei Qt3 und älter) linken und [..]
/tmp/ccBSgZ6V.o:(.eh_frame+0x13): undefined reference to `__gxx_personality_v0' collect2: ld returned 1 exit status
g++ verwenden. g++ -I/usr/include/QtGui -lQtGui -lQtCore hello.cpp -o hello -L/usr/lib/ (bzw. -L/usr/lib64) ist default. oder besser dir per pkg-config die richtigen Flags holen: make CXXFLAGS="$CXXFLAGS $(pkg-config --cflags --libs QtGui)" hello explizit: g++ $CXXFLAGS $(pkg-config --cflags --libs QtGui) hello.cpp -o hello HTH, -dnh -- Diese Signatur ist vorübergehend nicht erreichbar. Versuchen Sie es später noch einmal oder hinterlassen Sie eine Nachricht vor dem Signaturtrenner. Piep. -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Hallo David, Am Sonntag 07 Juni 2009 01:57:37 wrote David Haller:
g++ $CXXFLAGS $(pkg-config --cflags --libs QtGui) hello.cpp -o hello
Das klappt wunderbar. Jetzt zeigt er mir "Hallo, Welt" an. *hurra* -- Sincerely yours Sascha Manns openSUSE Marketing Team openSUSE Build Service openSUSE Features Screening Team Web: http://saschamanns.gulli.to Project-Blog: http://lizards.opensuse.org/author/saigkill Private-Blog: http://saschasbacktrace.blogspot.com
Hallo, Am Son, 07 Jun 2009, Sascha 'saigkill' Manns schrieb:
heute kam endlich mein bestelltes Buch an. KDE und QT Programmieren. Leider klappt das erste Listing nicht: // First Program // in QT #include
#include int main(int argc, char **argv) { QApplication app(argc, argv); QLabel *myfirst = new QLabel("<H1>Hallo, Welt!</H1>", 0); myfirst->show(); return app.exec(); }
Als Fehler kommt: Sagt das jemandem was?
Nein. Das nix sagt mir nix. -dnh PS: mit QT2 tut das Beispiel hier. -- Who stole my tagline? -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Hallo Sascha, Am Sonntag 07 Juni 2009 schrieb Sascha 'saigkill' Manns:
heute kam endlich mein bestelltes Buch an. KDE und QT Programmieren. Leider klappt das erste Listing nicht:
:)) Das ging mir gestern auch so - allerdings habe ich die etwas ältere Auflage und war faul, was das selber schreiben angeht. Daher habe ich den QTCreator ausprobiert. Der legt die Projekte gleich richtig an und produziert netterweise auch gleich die richtigen Schalter fürs Kompilieren.
// First Program // in QT #include
#include int main(int argc, char **argv) { QApplication app(argc, argv); QLabel *myfirst = new QLabel("<H1>Hallo, Welt!</H1>", 0); myfirst->show(); return app.exec(); }
Als Fehler kommt: Sagt das jemandem was?
Das sagte mir alles auch nix: Aber hier gibt es eine kleine Demo: http://www.youtube.com/watch?v=pPp35CbVLKE. Mein erster Versuch war daran gescheitert, dass ich die falsche Objektklasse ausgesucht hatte. Probier mal QDialog. Daraufhin habe ich beschlossen, dass Raten nicht so der beste Weg ist, QT/C++ zu lernen. Helga -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Servus Liste, g++ $CXXFLAGS $(pkg-config --cflags --libs QtGui) khelloworld.cpp -o khelloworld khelloworld.cpp:7:18: error: kapp.h: Datei oder Verzeichnis nicht gefunden khelloworld.cpp:14:24: error: qpopupmenu.h: Datei oder Verzeichnis nicht gefunden Gibts kapp und qpopupmenu auch für die neueren QT/KDE Versionen? -- Sincerely yours Sascha Manns openSUSE Marketing Team openSUSE Build Service openSUSE Features Screening Team Web: http://saschamanns.gulli.to Project-Blog: http://lizards.opensuse.org/author/saigkill Private-Blog: http://saschasbacktrace.blogspot.com
Hallo Sascha, Am Sonntag, 7. Juni 2009 schrieb Sascha 'saigkill' Manns:
Servus Liste,
g++ $CXXFLAGS $(pkg-config --cflags --libs QtGui) khelloworld.cpp -o khelloworld khelloworld.cpp:7:18: error: kapp.h: Datei oder Verzeichnis nicht gefunden khelloworld.cpp:14:24: error: qpopupmenu.h: Datei oder Verzeichnis nicht gefunden
Gibts kapp und qpopupmenu auch für die neueren QT/KDE Versionen?
die QT-includes sind nach Libs aufgeteilt und großgeschrieben ohne das
abschließende .h angelegt, also z.B.
#include
Servus Liste, servus Martin, Am Sonntag 07 Juni 2009 20:23:33 wrote Martin Hofius:
include-Pfad noch mitgegeben werden... Manchmal hilft es, in KDevelop einfach mal ein Simpel-KDE -bzw. QT-Programm anzulegen und sich dann mal die Compiler-Aufrufe bzw. die makefiles anzusehen. Für QT-Programme würde ich da auch den QtCreator empfehlen, der arbeitet mehr "QT-like" und nicht mit so viel automake-Gedönse. Manchmal kommt einem die einfachste Idee nicht. Hab jetzt miz KTemplate ein Projekt angelegt. Danke für den Tip. Hab auch die API Referenz von QT und KDE gefunden. Da kann man auch ältere Klassen abfragen. Klasse Sache.
Nochmals vielen Dank... -- Sincerely yours Sascha Manns openSUSE Marketing Team openSUSE Build Service openSUSE Features Screening Team Web: http://saschamanns.gulli.to Project-Blog: http://lizards.opensuse.org/author/saigkill Private-Blog: http://saschasbacktrace.blogspot.com
Hallo, Am Son, 07 Jun 2009, Sascha 'saigkill' Manns schrieb:
g++ $CXXFLAGS $(pkg-config --cflags --libs QtGui) khelloworld.cpp -o khelloworld khelloworld.cpp:7:18: error: kapp.h: Datei oder Verzeichnis nicht gefunden
Das ist ein KDE <= 3 Header.
khelloworld.cpp:14:24: error: qpopupmenu.h: Datei oder Verzeichnis nicht gefunden
Das ist ein QT <= 3 Header.
Gibts kapp und qpopupmenu auch für die neueren QT/KDE Versionen?
Anscheinend nicht. Die jew. Funktionen sind wohl "umgezogen" / entfernt worden. Bei QT3 gibt's ja z.B. eigentlich nur die libqt[-mt], bei QT4 jetzt diverse libs (libQtCore, libQtGui ...) und dabei wurden auch die Header umorganisiert (nicht daß ich Ahnung von QT/KDE > 1 hätte, aber man wühlt sich halt ab und an beim Paketebacken dran vorbei ...). Generell fehlen bei solchen Fehlermeldungen meist die passenden Include-Flags (-I PFAD), oder eben die Header (weil -devel RPM nicht installiert). Oder eben Umorganisation... Was du bei pkg-config jew. alles als Paket angeben kannst findest du in den (diversen) lib/pkgconfig/ Verzeichnissen (vgl. echo $PKG_CONFIG_PATH oder echo $PKG_CONFIG_PATH | tr ':' ' ' | xargs -r ls -1 oder per rpm -ql DEVELPAKET | grep '\.pc' Andere Software hat auch *-config scripte oder *Conf.sh Scriptfragmente (letzte z.B. v.a. im Gnome-Umfeld). Ich persönlich mag die -config Scripte am liebsten. Ein $(foo-config --cflags --libs) ist einfach intuitiv, bei pkg-config muß man des öfteren nachgucken, wie das Teil wirklich heißt (z.B. pkg-config --cflags gtk+-2.0). Achso, beim gucken, wo welcher Header herkommt / herkam ist 'webpin' sehr hilfreich. Ein 'webpin kapp.h' bzw. 'webpin qpopupmenu.h' liefert recht eindeutige Hinweise (nur) auf QT3/KDE3 Pakete. -dnh, der GTK1 und QT1 am liebsten mag, wenn's schon GTK/QT sein soll ;) -- Listen, three eyes, don't you try to outweird me. I get stranger things than you free with my breakfast cereal. -- Zaphod Beeblebrox -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
participants (4)
-
David Haller
-
Helga Fischer
-
Martin Hofius
-
Sascha 'saigkill' Manns