Seite 1 von 1

QwtPlot3D errors und Walkthrough

Verfasst: 23. Oktober 2010 23:37
von Pixtar
Hiho,

ich bin gestern durch google zufällig auf QwtPlot3D gestoßen und wollte es mal testen.
Also prompt heruntergeladen, FAQ und Manual gelesen, mit der Ordnerstruktur vertraut gemacht und in die Projekte geschnüffelt.

Dann kam der große Haken, nachdem ich in der *.pro Datei das Templateformat von VC auf QT umgestellt hatte und einen Warnhinweis in der qwtplot3d_functions auskommentiert hatte, spuckte der Compilier eine qwtplot3d.a sowie qwtplot3d.dll aus.

Nachdem ich mit DependencyWalker über die DLL gelaufen bin musste ich feststellen, das die Funktionsnamen nicht clear waren, sondern dieses blöde Namemerglin am Werke war.

Laut RHBaum in einem älteren Thread von mir, könnte ich nun durch den ganzen Quelltext von QwtPlot3D marschieren und alle Funktionen exportieren sowie die Header ändern oder ich nutze eine Def-Datei.

Laut QT Doku über DEF_FILE wird die DEF-Datei nur bei dem Template app eingesetzt. Sprich ich muss es einbinden, wenn ich mein Programm erstelle bzw die DLL importiere.
Warum sagt die MSDN hier was anderes? Dort heißt es: "Eine DEF-Datei ist besonders beim Erstellen einer DLL von Nutzen." Sprich beim exportieren .. was ist denn nun richtig? Oder ist beides richtig, nur das Qt im Gegensatz zu VC anders arbeitet wenn es um Dlls/DEFs geht?

Verfasst: 24. Oktober 2010 20:40
von Pixtar
Ich habe QwtPlot3D nun ans laufen bekommen.

Für alle die ebenfalls Probleme haben QwtPlot3D unter Qt4.6.2, möglicherweise auch neuer, zu kompilieren, empfehle ich folgendes:

1. Runterladen der zip-Datei und entpacken.
2. Die Pro-Datei im Hauptordner öffnen
3. Die Pro-Datei editieren und folgendes ändern:

Code: Alles auswählen

win32:TEMPLATE    = vclib
ändern zu

Code: Alles auswählen

win32:TEMPLATE    = lib
Speichern

4. Die qwtplot3d_function.cpp öffnen und zu der Funktion "bool Function::create()" springen:

Code: Alles auswählen

fprintf(stderr,"Function: no valid Plot3D Widget assigned");

auskommentieren

Code: Alles auswählen

//fprintf(stderr,"Function: no valid Plot3D Widget assigned");
Speichern

5. Projekt erstellen --> zu finden unter "/lib/" ("libqwtplot3d.a","qwtplot3d.dll")

Für den Versuch eines der Beispiele (examples) zu komilieren müssen ebenfalls Anpassungen vorgenommen werden:

1. Im Ordner "/examples/"die common.pro öffnen:
2. Dort folgendes ändern:
Unter der Sektion win32{}

Code: Alles auswählen

LIBS += ../../lib/qwtplot3d.lib
ändern zu

Code: Alles auswählen

LIBS += ../../lib/libqwtplot3d.a

Code: Alles auswählen

TEMPLATE  = vcapp
ändern zu

Code: Alles auswählen

TEMPLATE  = app
Weiterhin die Zeile:

Code: Alles auswählen

QMAKE_LFLAGS += /NODEFAULTLIB:msvcrt
auskommentieren

Code: Alles auswählen

#QMAKE_LFLAGS += /NODEFAULTLIB:msvcrt
Speichern

3. Eines der Projekbeispiele öffnen "/examples/simpleplot/simpleplot.pro" und kompilieren.
4. Exe-Datei ist zu finden in "/examples/bin/simpleplot.exe"