Forum: PC-Programmierung Programm lässt sich nicht compilieren


von Fragensteller (Gast)


Lesenswert?

Programm lässt sich nicht compilieren:

http://upload.wikimedia.org/wikibooks/de/3/3a/QwtSinus.png

meine Kurvenplot.pro-Datei:

QT += core
INCLUDEPATH += c:\qwt-6.0.1\include\qwt
LIBS += c:\qwt-6.0.1\lib\ -lqwt

TARGET = Kurvenplot
SOURCES += main.cpp

Mein Kurvenplott.cpp wie das Beispiel in dem Link.

Fehlermeldung beim Compilieren:
C:\....\ -lqwl no such file or directory.

Was mache ich beim Compilieren falsch?

von Antworter (Gast)


Lesenswert?

nichts, denn der Fehler passiert beim Linken.

vieleicht ist:

LIBS += c:\qwt-6.0.1\lib\

besser.
Das " -lqwt" ist die Compileroption und nicht Teil des Lib-Pfads.

von Fragensteller (Gast)


Lesenswert?

ok, habs weggelassen.

Jetzt bin ich einen Schritt weiter gekommen, aber nun mit einer anderen 
Fehlermeldung

Starte 
C:\...\Kurvenplot-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK__De 
bug\debug\Kurvenplot.exe...Invalid  parameter passed to C runtime 
function.
Invalid parameter passed to C runtime function.
QWidget: Must construct a QApplication before a QPaintDevice

von Fragensteller (Gast)


Lesenswert?

Jetzt kommen zwei andere Fehlermeldungen:

:-1: Fehler:cannot open output file debug\Kurvenplot.exe: Permission 
denied
:-1: Fehler:collect2: ld returned 1 exit status

von Karl H. (kbuchegg)


Lesenswert?

Fragensteller schrieb:

> QWidget: Must construct a QApplication before a QPaintDevice


Und das Programm welches du kompiliert hast, sieht wie aus?

von Fragensteller (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Und das Programm welches du kompiliert hast, sieht wie aus?

das war noch ein anderer Fehler, beim Erstellen eines neuen Projektes 
war die main.cpp nicht leer, da stand noch was mehr drinnen, ein Rest 
von was anderem, den habe ich weggemacht und jetzt ist nur noch das 
reine Beispiel drinnen, wie in dem Link, jedoch kommen jetzt die beiden 
Fehlermeldungen

cannot open Kurvenplot.exe, permission denied ...

von Fragensteller (Gast)


Lesenswert?

Und wenn ich umschalte beim Compilieren von ... Debug auf ... Release, 
dann kommt eine ganze Horde Fehler wie

C:\...\Kurvenplot\main.cpp:-1: Fehler:undefined reference to 
`QwtPlot::QwtPlot(QWidget*)'

C:\...\Kurvenplot\main.cpp:-1: Fehler:undefined reference to 
`QwtPlotCurve::QwtPlotCurve(QString const&)'

... davon noch ein paar Stück

von Decius (Gast)


Lesenswert?

Also wenn mich das Bild am Anfang nicht täuscht, arbeitest Du unter 
Linux. Da gibt es aber keine Laufwerke wie "C:". Deshalb passen Deine 
ganzen Pfadangaben auch überhaupt nicht zu Linux.

Das Rootverzeichnis(Stammverzeichnis) in Linux ist "/" Das gilt dann 
aber für den gesamten Rechner. Laufwerke werden unter Linux einfach in 
den Verzeichnisbaum eingehängt(mounted). Außerdem kein Backslah nur 
Slashes verwenden!

Falsch:
C:\...\Kurvenplot-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK__De

Richtig:
/.../Kurvenplot-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK__De

Punkte eben noch auffüllen!

von Fragensteller (Gast)


Lesenswert?

Decius schrieb:
> Also wenn mich das Bild am Anfang nicht täuscht, arbeitest Du unter
> Linux.

Nee, Windoes 7

>C:\...\Kurvenplot-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK__D e

Das ist die Fehlermeldung, der Pfad ist schon richtig, habe nur die 
Punkte dareingesetzt, weil der Pfad sonst zu lang wird - ist das 
Resultat der Fehlermeldung, nicht von mir im Programm gemacht.

von Decius (Gast)


Lesenswert?

Windows 7 mit OpenSUSe Logo soso! Selbst in einer virtuellen Maschine 
mit Linux unter Windows würden die Linuxregeln für Pfadangaben gelten.

Deshalb vorsicht TROLL!

von Decius (Gast)


Lesenswert?


von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Eben: Sieh Dir doch mal die URL ganz genau an. Meinst Du, daß das ein 
Screenshot des Threadstarters ist?

von Johann L. (radiostar)


Lesenswert?

Fragensteller schrieb:
> cannot open Kurvenplot.exe, permission denied ...

fehlende Schreibrechte für den gewählten Pfad? Oder Kurvenplot.exe ist 
schon von einer anderen Applikation belegt - ein altes Windows-Problem, 
bringt mich regelmäßig zur Weißglut.

> Und wenn ich umschalte beim Compilieren von ... Debug auf ... Release,
> dann kommt eine ganze Horde Fehler wie

Dann stimmen wohl die Einstellungen für das Release-Build nicht. 
Nachzuprüfen unter Projects->Build Settings. Vergleiche mal die 
Library-Einstellungen für Release und Debug

von Karl H. (kbuchegg)


Lesenswert?

J. L. schrieb:
> Fragensteller schrieb:
>> cannot open Kurvenplot.exe, permission denied ...
>
> fehlende Schreibrechte für den gewählten Pfad? Oder Kurvenplot.exe ist
> schon von einer anderen Applikation belegt - ein altes Windows-Problem,
> bringt mich regelmäßig zur Weißglut.

Jup.

Sein erster Versuch das Programm laufen zu lassen, ist ja in einem 
Absturz gemündet. Wenn Windows die EXE gelockt hat, bis das EXE 
terminiert, dann kann man nicht neu drüber schreiben. Passiert im 
Developer Studio auch ab und an, dass DLLs gelockt bleiben, wenn ich die 
EXE im Debugger abwürge.


@Fragensteller
Reboote mal deinen PC

von Fragensteller (Gast)


Angehängte Dateien:

Lesenswert?

Karl Heinz Buchegger schrieb:
> @Fragensteller
> Reboote mal deinen PC

Das habe ich gemacht, jetzt lies es sich auch compilieren wieder, aber 
es kamen nun erneut einige Fehlermeldungen.

Ich habe jetzt mal einen Screenshot gemacht mit dem Quelltext von 
main.cpp, der Projektdatei mit den Pfadoptionen und unten der 
Fehlerausgabeleiste.

von Fragensteller (Gast)


Lesenswert?

Ich habe zu diesem Link nochmal eine Frage:

http://qwt.sourceforge.net/class_qwt_plot.html

Dort steht in einem Beispiel:

>>...
>>QwtPlot *myPlot = new QwtPlot("Two Curves", parent);
>>...

In dem anderen Beispiel steht ja "nur"

QwtPlot plot;

Liegt darin vielleicht der Hund begraben, dass die Zuweisung in dem 
Beispiel falsch sein könnte? Ich habe es mal ausprobiert, dass ich aus 
dem plot einen Pointer gemacht habe *plot, dann kamen andere 
Fehlermeldung, oder auch mit einer dierekten Speicheradresse &plot;, 
dann waren die Fehlermeldungen wieder anders, cih hab auch ausprobiert 
später aus plot.show(); plot->show(); gemacht und so, verschiedene 
Variationen durchgespielt, aber leider bisher erfolglos.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.