PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Linken will nicht klappen



MagData
13-03-2003, 19:14
Hallo Zusammen!

Ich habe ein kleines QT Programm geschrieben und bekomme beim Linken einige unschöne Fehler. Kompilieren kann ich die Sourcen. Dieses mach ich mit

g++ -c -pipe -Wall -W -O2 -DQT_NO_DEBUG -I. -I/usr/local/qt/include -I/usr/local/qt/mkspecs/default -I/usr/local/kde/include -o main.o main.cpp

dann beim Linken mit

g++ -o main kpwindow.o main.o -Wl,-rpath,/usr/local/qt/lib -L/usr/local/qt/lib -L/usr/X11R6/lib -L/usr/local/kde/lib -lXext -lX11 -lm -lqt-mt


bekomme ich diese Fehler:


kpwindow.o(.text+0x22): In function `KPWindow::KPWindow[not-in-charge](char const*)':
: undefined reference to `KMainWindow::KMainWindow[not-in-charge](QWidget*, char const*, unsigned)'
kpwindow.o(.text+0x2d): In function `KPWindow::KPWindow[not-in-charge](char const*)':
: undefined reference to `vtable for KPWindow'
(und viele weitere von der Sorte)


In meinem QT-Lib Verzeichnis (/usr/local/qt/lib/) liegen einige libqt-mt.so*, aber keine libqt.so*

Hat einer eine Idee woran der Fehler liegt und wie ich diesen behebe? Danke schonmal im Voraus!

Greetings
Mag

anda_skoa
13-03-2003, 20:48
Das Problem ist laut deinem Linker Output nicht Qt, sondern der Linker vermisst die KDE Library, in der KMainWindow enthalten ist.

Ich schätze libkdeui
libkde core wirst du wahrscheinlich auch brauchen, da ist KApplication drinnen.

Bei einer KDE Anwendung empfiehlt es sich, ein autoconf/automake Framework zu verwenden, zB durhc KDevelop oder kapptemplate (Paket kdesdk) generiert.

Ciao,
_

MagData
13-03-2003, 21:03
Hi,

danke schonmal für den Tipp. Daran habe ich gar nicht gedacht. Hatte mich irgendwie auf eine QT Sache eingeschossen. Allerdings habe ich libkdeui im angegebenen Pfad liegen. Oder fehlt da noch sowas wie ein -lkdeui ?

Wär' vielleicht besser sowas wie KDevelop zu benutzen, ich wollte allerdings, solang die Dinge noch überschaubar sind, das von Hand machen, damit ich mal auch langsam dahinter steige, was da so alles gemacht wird / werden muss.

Hast Du sonst noch ne Idee, woran das liegen kann? Ach ja. QT und KDE habe selbstkompiliert und nicht als Paket installiert. Dann sollte ich doch eigentlich alles notwendige da haben, oder?

Grüße
Mag

anda_skoa
13-03-2003, 21:38
Original geschrieben von MagData
Hi,

danke schonmal für den Tipp. Daran habe ich gar nicht gedacht. Hatte mich irgendwie auf eine QT Sache eingeschossen. Allerdings habe ich libkdeui im angegebenen Pfad liegen. Oder fehlt da noch sowas wie ein -lkdeui ?


ja
-lkdeui -lkdecore



Wär' vielleicht besser sowas wie KDevelop zu benutzen, ich wollte allerdings, solang die Dinge noch überschaubar sind, das von Hand machen, damit ich mal auch langsam dahinter steige, was da so alles gemacht wird / werden muss.


Kann ich verstehen, aber bei KDE Programmen gibt es eben gleich mehrere Libs auf die man achten muss und das ist händisch nicht so einfach.

Man kann es "halb-händisch" machen, in dem man zuerst von KDevelop das Automake Framework generieren lässt und dann das automatische Anpassen abschaltet und die Makefile.am Dateien entsprechend von Hand ändert.

Das mit dem virtual Table sieht nach moc aus.
Hat die Klasse signals/slots aber vielleicht kein Q_OBJECT Macro?
Bzw, falls es ein Q_OBJECT macro hat, wurde moc dafür aufgerufen und dass Resultat inkludiert oder kompiliert?



Hast Du sonst noch ne Idee, woran das liegen kann? Ach ja. QT und KDE habe selbstkompiliert und nicht als Paket installiert. Dann sollte ich doch eigentlich alles notwendige da haben, oder?


Ja, das sollte alles enthalten.

Ciao,
_