QWT Linkerfehler

Alles rund um die Programmierung mit Qt
Antworten
Melle_87
Beiträge: 31
Registriert: 1. Dezember 2010 12:41

QWT Linkerfehler

Beitrag von Melle_87 »

Hallo!

Ich versuche momentan QWT zu installieren.
Ich verwende Windows, Visual Studio 2008, QT4.8.6 und QWT6.1.2.

Ich bin auch schon ein gutes Stück vorangekommen.
Im QT-Designer bekomme ich die QWT-Widgets auch schon angezeigt und kann sie auf meine Oberfläche ziehen.
Aber wenn ich meine Applikation dann übersetzen möchte, bekomme ich eine Vielzahl von Fehlermeldungen.

Code: Alles auswählen

error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __cdecl QwtPlot::QwtPlot(class QWidget *)" (__imp_??0QwtPlot@@QAA@PAVQWidget@@@Z)" in Funktion ""public: void __cdecl Ui_gcClass::setupUi(class QWidget *)" (?setupUi@Ui_gcClass@@QAAXPAVQWidget@@@Z)".
error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual struct QMetaObject const * __cdecl QwtPlot::metaObject(void)const " (?metaObject@QwtPlot@@UBAPBUQMetaObject@@XZ)".
error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual void * __cdecl QwtPlot::qt_metacast(char const *)" (?qt_metacast@QwtPlot@@UAAPAXPBD@Z)".
error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual int __cdecl QwtPlot::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@QwtPlot@@UAAHW4Call@QMetaObject@@HPAPAX@Z)".
error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual bool __cdecl QwtPlot::event(class QEvent *)" (?event@QwtPlot@@UAA_NPAVQEvent@@@Z)".
error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual bool __cdecl QwtPlot::eventFilter(class QObject *,class QEvent *)" (?eventFilter@QwtPlot@@UAA_NPAVQObject@@PAVQEvent@@@Z)".
error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual class QSize __cdecl QwtPlot::sizeHint(void)const " (?sizeHint@QwtPlot@@UBA?AVQSize@@XZ)".
error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual class QSize __cdecl QwtPlot::minimumSizeHint(void)const " (?minimumSizeHint@QwtPlot@@UBA?AVQSize@@XZ)".
error LNK2001: Nicht aufgelöstes externes Symbol ""protected: virtual void __cdecl QwtPlot::resizeEvent(class QResizeEvent *)" (?resizeEvent@QwtPlot@@MAAXPAVQResizeEvent@@@Z)".
error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual class QwtScaleMap __cdecl QwtPlot::canvasMap(int)const " (?canvasMap@QwtPlot@@UBA?AVQwtScaleMap@@H@Z)".
error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual void __cdecl QwtPlot::updateLayout(void)" (?updateLayout@QwtPlot@@UAAXXZ)".
error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual void __cdecl QwtPlot::drawCanvas(class QPainter *)" (?drawCanvas@QwtPlot@@UAAXPAVQPainter@@@Z)".
error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual void __cdecl QwtPlot::getCanvasMarginsHint(class QwtScaleMap const * const,class QRectF const &,double &,double &,double &,double &)const " (?getCanvasMarginsHint@QwtPlot@@UBAXQBVQwtScaleMap@@ABVQRectF@@AAN222@Z)".
error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual void __cdecl QwtPlot::drawItems(class QPainter *,class QRectF const &,class QwtScaleMap const * const)const " (?drawItems@QwtPlot@@UBAXPAVQPainter@@ABVQRectF@@QBVQwtScaleMap@@@Z)".
error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual class QVariant __cdecl QwtPlot::itemToInfo(class QwtPlotItem *)const " (?itemToInfo@QwtPlot@@UBA?AVQVariant@@PAVQwtPlotItem@@@Z)".
error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual class QwtPlotItem * __cdecl QwtPlot::infoToItem(class QVariant const &)const " (?infoToItem@QwtPlot@@UBAPAVQwtPlotItem@@ABVQVariant@@@Z)".
error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual void __cdecl QwtPlot::replot(void)" (?replot@QwtPlot@@UAAXXZ)".
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: virtual __cdecl QwtPlot::~QwtPlot(void)" (__imp_??1QwtPlot@@UAA@XZ)" in Funktion ""public: virtual void * __cdecl QwtPlot::`scalar deleting destructor'(unsigned int)" (??_GQwtPlot@@UAAPAXI@Z)".
Kann mir hier jemand weiterhelfen?
Ich denke mal, dass es an den Projekteinstellungen (Linker) liegen könnte. Aber ich weiß nicht, was genau das Problem ist.


Viele Grüße,
Melle
Zuletzt geändert von Melle_87 am 10. Mai 2016 15:41, insgesamt 1-mal geändert.
bobcat
Beiträge: 125
Registriert: 21. April 2010 14:51

Re: QWT

Beitrag von bobcat »

Linkerfehler: Hast Du die libs in Deinem .pro File angegeben? Also sowas in der Art

Code: Alles auswählen

CONFIG(debug, debug|release) {
    LIBS += $$(QWTDIR)/lib/qwtd.lib 
} else {
    LIBS += $$(QWTDIR)/lib/qwt.lib 
}

INCLUDEPATH += $$(QWTDIR)/include 

# Eventuell auch noch
DEFINES += QWT_DLL
QWTDIR ist Deine Umgebungsvariable, die auf Deine qwt Installation zeigt.
Melle_87
Beiträge: 31
Registriert: 1. Dezember 2010 12:41

Re: QWT

Beitrag von Melle_87 »

Ich habe kein .pro-File.
Das Projekt habe ich in VisualStudio2008 erstellt.
Ich habe aber dort in den Projekteinstellungen unter \Linker\Eingabe\Zusätzliche Abhängikeiten "qwtd.lib" (Debug) oder "qwt.lib" (Release) angegeben.
Zudem habe ich unter \Linker\Allgemein\Zusätzliche Bibliotheksverzeichnisse "$(QWTDIR)\lib" (Debug und Release) eingetragen.
Muss ich sonst noch irgendetwas einstellen?
bobcat
Beiträge: 125
Registriert: 21. April 2010 14:51

Re: QWT

Beitrag von bobcat »

Ich kenne mich leider nicht damit aus, wie man VS beibringt, mit Qt zu arbeiten. Ich nutze den Qt Creator als IDE, konfiguriere mein Projekt mit einem .pro File und verwende dann qmake, um ein VS Projekt daraus zu erstellen. Ich kompiliere dann in VS.
Den Qt Creator halte ich für deutlich komfortabler, um unter Qt zu entwickeln. Leistungsfähiger finde ich z.B. das Syntaxhighlighting, Autocomplete oder die Navigation durch den Code. Hat z.B. noch den weiteren Vorteil, dass Du Dir keine Gedanken machen musst, wie Du Dein Projekt upgradest, wenn Du von VS 2008 auf eine aktuellere Version wechseln möchtest. qmake laufen lassen und fertig.
Uwe
Beiträge: 176
Registriert: 9. Oktober 2005 13:37
Wohnort: München

Re: QWT

Beitrag von Uwe »

Melle_87 hat geschrieben:Muss ich sonst noch irgendetwas einstellen?
Zumindest das Compiler Flag "QWT_DLL" musst Du mitgeben.

Uwe
Melle_87
Beiträge: 31
Registriert: 1. Dezember 2010 12:41

Re: QWT

Beitrag von Melle_87 »

Diese Einstellung hatte ich ebenfalls schon vorgenommen. Hatte ich aber vergessen zu schreiben.
In den Projekteinstellungen habe ich unter \C/C++\Präprozessor\Präprozessordefinitionen "QWT_DLL" (Debug und Release) eingetragen.

Hat sonst noch jemand einen Tipp für mich?
bobcat
Beiträge: 125
Registriert: 21. April 2010 14:51

Re: QWT

Beitrag von bobcat »

Überprüfe mal, ob die Header-Dateien gefunden werden.
Melle_87
Beiträge: 31
Registriert: 1. Dezember 2010 12:41

Re: QWT

Beitrag von Melle_87 »

Die Headerdatei "qwt_plot.h" kann ich im VisualStudio aus dem Projekt heraus ohne Probleme öffnen.

In den Projekteinstellungen habe ich bereits unter \C/C++\Allgemein\Zusätzliche Includeverzeichnisse das Include-Verzeichnis der QWT-Headerdateien eingetragen.
Melle_87
Beiträge: 31
Registriert: 1. Dezember 2010 12:41

Re: QWT

Beitrag von Melle_87 »

Kann das Problem noch mit den Einstellungen von QWT in "qwtconfig.pri" zu tun haben?
In dieser Datei habe ich bis jetzt nur "QWT_INSTALL_PREFIX" entsprechend gesetzt.
bobcat
Beiträge: 125
Registriert: 21. April 2010 14:51

Re: QWT Linkerfehler

Beitrag von bobcat »

Wie hast Du qwt denn installiert? Wenn Du von der qwtconfig.pri sprichst, dann bist Du hier den Weg mit qmake gegangen? Also:

Code: Alles auswählen

qmake qwt.pro
nmake
nmake install
Bei meiner Installation von qwt habe ich noch die Umgebungsvariable QMAKEFEATURES setzen müssen (vor der Installation):

Code: Alles auswählen

QMAKEFEATURES = c:/path/to/my/qwt/installation
Siehe auch
http://qt-project.org/doc/qt-4.8/qmake- ... n-features
Melle_87
Beiträge: 31
Registriert: 1. Dezember 2010 12:41

Re: QWT Linkerfehler

Beitrag von Melle_87 »

Ja, genau so habe ich QWT installiert.
Ich habe das gerade eben mal ausprobiert mit der neuen Umgebungsvariablen QMAKEFEATURES.
Ich habe QMAKEFEATURES erstellt und QWT dann nochmals installiert.
Aber ich bekomme leider immer noch die gleichen Fehlermeldungen.
bobcat
Beiträge: 125
Registriert: 21. April 2010 14:51

Re: QWT Linkerfehler

Beitrag von bobcat »

Hm, dann probier doch mal, ein .pro File für Dein Projekt zu erstellen mit den Hinweisen aus meinem ersten Kommentar. Dann

Code: Alles auswählen

qmake myProject.pro
Dann öffnest Du das VS-Projekt und schaust, ob das läuft. Wenn das klappt, dann kannst Du Dein eigenes VS-Projekt mit dem von qmake erstellten vergleichen und nach Unterschieden suchen.
Antworten