Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » Problem mit qwt-includes

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.07.2007, 20:37 Uhr
~elias.koegel
Gast


Hallo,

ich bin ein relativer Neueinsteiger ins c++, habe allerdings schon von PHP her viel Erfahrung. Nur leider braucht mal in PHP kaum irgendwelche includes(). Aber daran hängt es leider.
Um das ganze mal noch näher zu erklären: Wir müssen eine wissenschaftliche Arbeit machen, die in einem Diagramm ausgewertet werden soll. Dazu wollten wir ein fertiges aus dem Qwt nehmen. Aber leider habe ich da Probleme das einzubinden. Zuersteinmal meine Dateien. Ich habe sie stark gekürzt, um hier nicht unnötig viel zu posten:

C++:
fenster_inhalt.h
#include <QtGui>
#include </usr/local/qwt-5.0.2/include/qwt_plot.h>

class FensterInhalt : public QWidget {
public:
    FensterInhalt( void );
private:
    QwtPlot *Diagramm;
};



C++:
fenster_inhalt.cpp:
#include <QtGui>
#include <fenster_inhalt.h>
#include </usr/local/qwt-5.0.2/include/qwt_plot.h>

FensterInhalt::FensterInhalt( void ) {

    Diagramm = new QwtPlot( this );

}



Wenn ich nun versuche, diese zu compilieren, gibt mir die Konsole folgendes zurück:

Code:
elias@elias-desktop:~/bell$ qmake -project && qmake && make && ./bell
g++  -o bell fenster.o fenster_inhalt.o main.o TempControl.o moc_fenster.o moc_TempControl.o moc_qwt_plot.o qrc_picts.o    -L/usr/lib -lQtGui -lQtCore -lpthread
fenster_inhalt.o: In function `FensterInhalt::FensterInhalt()':
fenster_inhalt.cpp:(.text+0x53): undefined reference to `QwtPlot::QwtPlot(QWidget*)'
fenster_inhalt.o: In function `FensterInhalt::FensterInhalt()':
fenster_inhalt.cpp:(.text+0xe3): undefined reference to `QwtPlot::QwtPlot(QWidget*)'
moc_qwt_plot.o: In function `QwtPlot::qt_metacall(QMetaObject::Call, int, void**)':
moc_qwt_plot.cpp:(.text+0x1bd): undefined reference to `QwtPlot::applyProperties(QString const&)'
moc_qwt_plot.cpp:(.text+0x1fa): undefined reference to `QwtPlot::grabProperties() const'
moc_qwt_plot.cpp:(.text+0x244): undefined reference to `QwtPlot::clear()'
moc_qwt_plot.cpp:(.text+0x287): undefined reference to `QwtPlot::autoRefresh()'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0x14): undefined reference to `QwtPlot::~QwtPlot()'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0x18): undefined reference to `QwtPlot::~QwtPlot()'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0x1c): undefined reference to `QwtPlot::event(QEvent*)'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0x40): undefined reference to `QwtPlot::sizeHint() const'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0x44): undefined reference to `QwtPlot::minimumSizeHint() const'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0x84): undefined reference to `QwtPlot::resizeEvent(QResizeEvent*)'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0xe0): undefined reference to `QwtPlot::print(QPainter*, QRect const&, QwtPlotPrintFilter const&) const'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0xe4): undefined reference to `QwtPlot::canvasMap(int) const'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0xe8): undefined reference to `QwtPlot::polish()'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0xec): undefined reference to `QwtPlot::updateLayout()'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0xf0): undefined reference to `QwtPlot::replot()'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0xf4): undefined reference to `QwtPlot::legendItemClicked()'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0xf8): undefined reference to `QwtPlot::legendItemChecked(bool)'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0xfc): undefined reference to `QwtPlot::drawCanvas(QPainter*)'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0x100): undefined reference to `QwtPlot::drawItems(QPainter*, QRect const&, QwtScaleMap const*, QwtPlotPrintFilter const&) const'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0x104): undefined reference to `QwtPlot::updateTabOrder()'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0x108): undefined reference to `QwtPlot::printLegendItem(QPainter*, QWidget const*, QRect const&) const'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0x10c): undefined reference to `QwtPlot::printTitle(QPainter*, QRect const&) const'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0x110): undefined reference to `QwtPlot::printScale(QPainter*, int, int, int, int, QRect const&) const'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0x114): undefined reference to `QwtPlot::printCanvas(QPainter*, QRect const&, QwtScaleMap const*, QwtPlotPrintFilter const&) const'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0x118): undefined reference to `QwtPlot::printLegend(QPainter*, QRect const&) const'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0x124): undefined reference to `non-virtual thunk to QwtPlot::~QwtPlot()'
moc_qwt_plot.o:(.rodata._ZTV7QwtPlot[vtable for QwtPlot]+0x128): undefined reference to `non-virtual thunk to QwtPlot::~QwtPlot()'
collect2: ld gab 1 als Ende-Status zurück
make: *** [bell] Fehler 1
elias@elias-desktop:~/bell$                      



Installiert habe ich das Qwt einfach, indem ich es entpackt habe und "qmake && make && make install" ausgeführt habe. So wurde es auch auf qwt.sourceforge.net beschrieben.

Ich verwende übrigens Kubuntu (Feisty). Ich hatte auch schon versucht, qwt über apt-get zu installieren, aber auch ohne Erfolg.

Wo liegt nun der Fehler?? Habe ich was falsch installiert? Oder muss ich in der *.pro Datei noch irgendwelche Pfade angeben? Wenn ja, welche??

Ich würde mich freuen, wenn mir hier jemand helfen kann, da ich das Qwt wirklich brauche.

MfG Elias
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.07.2007, 00:55 Uhr
0xdeadbeef
Gott
(Operator)


Du musst die Bibliothek auch dazulinken. Ich nehm mal an, die Bibliothek heißt libqwt und liegt in /usr/local/qwt-5.0.2/lib, in dem Fall mach aus

C++:
#include </usr/local/qwt-5.0.2/include/qwt_plot.h>


besser

C++:
#include <qwt_plot.h>


und ruf den Compiler auf als

Code:
g++ -L /usr/local/qwt-5.0.2/lib -lqwt -I/usr/local/qwt-5.0.2/include -c fenster_inhalt.cpp:


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.07.2007, 10:32 Uhr
~elias.koegel
Gast


Schonmal vielen Dank für die Info. Aber leider verwende ich Makefiles, bzw. *.pro-Dateien. Wenn ich mein Programm compilieren möchte gehe ich so vor:

Code:
qmake -project
qmake
make



Wo muss ich jetzt Was anhängen, damit er mit dem o.g. Befehl meine Dateien kompiliert? Oder muss ich da in der pro-Datei was ändern?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.07.2007, 16:59 Uhr
Blubber2063



Nach dem qmake -project öffnest du das .pro file dort fügst du dann LIBS+= -L /usr/local/qwt-5.0.2/lib -lqwt ein.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.07.2007, 20:50 Uhr
~elias.koegel
Gast


Ok, ich habe jetzt diesen Befehl in die bell.pro eingefügt, aber leider kommt trotzdem ein Fehler: error: qwt_plot.h: No such file or directory

Ich habe in der bell.pro diese beiden Zeilen probiert:
LIBS+= -L/usr/local/qwt-5.0.2/include -lqwt
LIBS+= -L/usr/local/qwt-5.0.2/lib -lqwt

Meine pro-Datei insgesamt sieht so aus:

Code:
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
LIBS+= -L/usr/local/qwt-5.0.2/lib -lqwt

# Input
HEADERS += fenster.h fenster_inhalt.h TempControl.h
SOURCES += fenster.cpp fenster_inhalt.cpp main.cpp TempControl.cpp
RESOURCES += picts.qrc



Der Befehl, um die entsprechende Datei zu kompilieren ist laut Konsolenausgabe:
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I. -o fenster.o fenster.cpp

Mich wundert, dass das qwt in diesem Befehl noch gar nicht erscheint. Eigentlich müsste da doch was zu diesen Includes drinne stehen, oder?

Kann mir noch jemand helfen und sagen, was ich falsch mache?

Hier nochmal die gesamte Konsolenausgabe:

Code:
elias@elias-desktop:~/bell$ qmake && make
g++ -c -pipe -O2 -Wall -W -D_REENTRANT  -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I. -o fenster.o fenster.cpp
In file included from ./fenster.h:2,
                 from fenster.cpp:2:
./fenster_inhalt.h:3:22: error: qwt_plot.h: No such file or directory
./fenster_inhalt.h:12: Fehler: ISO-C++ verbietet Deklaration von »QwtPlot« ohne Typ
./fenster_inhalt.h:12: Fehler: expected »;« before »*« token
make: *** [fenster.o] Fehler 1
elias@elias-desktop:~/bell$      

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
06.07.2007, 21:25 Uhr
Blubber2063



Du hast da auch einen Fehler drinne das muss so aussehen:

Code:

TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
INCLUDEPATH += /usr/local/qwt-5.0.2/include
LIBS+= -L/usr/local/qwt-5.0.2/lib -lqwt

# Input
HEADERS += fenster.h fenster_inhalt.h TempControl.h
SOURCES += fenster.cpp fenster_inhalt.cpp main.cpp TempControl.cpp
RESOURCES += picts.qrc


Dieser Post wurde am 06.07.2007 um 21:25 Uhr von Blubber2063 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.07.2007, 17:37 Uhr
~elias.koegel
Gast


Hey Danke, das wars. Jetzt funktioniert es endlich.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: