Seite 1 von 1

QWT Linkerfehler

Verfasst: 4. Mai 2016 12:44
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

Re: QWT

Verfasst: 4. Mai 2016 15:03
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.

Re: QWT

Verfasst: 4. Mai 2016 15:18
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?

Re: QWT

Verfasst: 4. Mai 2016 17:46
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.

Re: QWT

Verfasst: 8. Mai 2016 10:27
von Uwe
Melle_87 hat geschrieben:Muss ich sonst noch irgendetwas einstellen?
Zumindest das Compiler Flag "QWT_DLL" musst Du mitgeben.

Uwe

Re: QWT

Verfasst: 9. Mai 2016 08:03
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?

Re: QWT

Verfasst: 10. Mai 2016 10:26
von bobcat
Überprüfe mal, ob die Header-Dateien gefunden werden.

Re: QWT

Verfasst: 10. Mai 2016 10:36
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.

Re: QWT

Verfasst: 10. Mai 2016 10:39
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.

Re: QWT Linkerfehler

Verfasst: 12. Mai 2016 09:59
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

Re: QWT Linkerfehler

Verfasst: 12. Mai 2016 11:20
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.

Re: QWT Linkerfehler

Verfasst: 12. Mai 2016 11:31
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.