komisches problem
komisches problem
Hi,
ich benutze Eclipse mit Qt4. ich erstellte zwei projekte. einmal eins mit meinen funktionen und außerdem eine GUI. Am Ende als beide fertig waren versuchte ich sie in einem neuen Projekt zu verbinden. Das .pro File erstellte ich mit dem Make Target "qmake -project". Das Makefile erstellte ich mit dem Make Target "qmake -makefile". Bishierhin klappte auch alles. Danach benutzte ich das "mingw32-make -f makefile". Aber irgendwie klappt es nicht, weil bei mir jetzt komische fehlermeldungen kommen. Hier ist der Ausschnitt aus meiner Konsole:
-------------------------------------------------------------------------------------
mingw32-make -f makefile all
mingw32-make -f Makefile.Debug all
mingw32-make[1]: Entering directory `Y:/Projekt/Sourcecode/isocreator'
mingw32-make[1]: Nothing to be done for `all'.
mingw32-make[1]: Leaving directory `Y:/Projekt/Sourcecode/isocreator'
mingw32-make -f Makefile.Release all
mingw32-make[1]: Entering directory `Y:/Projekt/Sourcecode/isocreator'
g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -Wl,-s -Wl,-subsystem,windows -o "release\isocreator.exe" release\main.o release\moc_ui_untitled.o -L"y:\Projekt\qt-win-opensource-src-4.2.0\qt-win-opensource-src-4.2.0\lib" -lmingw32 -lqtmain -lQtGui4 -lQtCore4
C:\MinGW-5.0.3\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -lQtGui4
collect2: ld returned 1 exit status
mingw32-make[1]: *** [release\isocreator.exe] Error 1
mingw32-make[1]: Leaving directory `Y:/Projekt/Sourcecode/isocreator'
mingw32-make: *** [release-all] Error 2
-------------------------------------------------------------------------------------
Der Error ist:
ld: cannot find -lQtGui4
Das Warning ist:
Invalid project path: Duplicate path entries.
Kann mir jemand bei meinem Problem helfen?
ich benutze Eclipse mit Qt4. ich erstellte zwei projekte. einmal eins mit meinen funktionen und außerdem eine GUI. Am Ende als beide fertig waren versuchte ich sie in einem neuen Projekt zu verbinden. Das .pro File erstellte ich mit dem Make Target "qmake -project". Das Makefile erstellte ich mit dem Make Target "qmake -makefile". Bishierhin klappte auch alles. Danach benutzte ich das "mingw32-make -f makefile". Aber irgendwie klappt es nicht, weil bei mir jetzt komische fehlermeldungen kommen. Hier ist der Ausschnitt aus meiner Konsole:
-------------------------------------------------------------------------------------
mingw32-make -f makefile all
mingw32-make -f Makefile.Debug all
mingw32-make[1]: Entering directory `Y:/Projekt/Sourcecode/isocreator'
mingw32-make[1]: Nothing to be done for `all'.
mingw32-make[1]: Leaving directory `Y:/Projekt/Sourcecode/isocreator'
mingw32-make -f Makefile.Release all
mingw32-make[1]: Entering directory `Y:/Projekt/Sourcecode/isocreator'
g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -Wl,-s -Wl,-subsystem,windows -o "release\isocreator.exe" release\main.o release\moc_ui_untitled.o -L"y:\Projekt\qt-win-opensource-src-4.2.0\qt-win-opensource-src-4.2.0\lib" -lmingw32 -lqtmain -lQtGui4 -lQtCore4
C:\MinGW-5.0.3\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -lQtGui4
collect2: ld returned 1 exit status
mingw32-make[1]: *** [release\isocreator.exe] Error 1
mingw32-make[1]: Leaving directory `Y:/Projekt/Sourcecode/isocreator'
mingw32-make: *** [release-all] Error 2
-------------------------------------------------------------------------------------
Der Error ist:
ld: cannot find -lQtGui4
Das Warning ist:
Invalid project path: Duplicate path entries.
Kann mir jemand bei meinem Problem helfen?
hi,
da bin ich wieder. also die oben beschriebenen probleme habe ich geschafft zu lösen. dafür habe ich das Makefile.Release bearbeitet.
Dort ersetzte ich -lQtGui4 durch -lQtGuid4. Wieso das jetzt dewegen funktioniert kann ich mir auch nicht erklären. Ich hoffe jemand kennt noch einen anderen Weg dieses Problem zu beheben. Dadurch kommen wir aber schon gleich zu meinem nächsten Problem:
Wenn ich das Prog über Eclipse starte klappt alles perfekt. Aber wenn ich in meinen Ordner gehe dann finde ich die .exe in zwei ordnern (release und debug). führ ich jetzt eine von denen aus dann kann ich das programm in meinem taskmanager sehen, aber sonst nirgendswo. die gui taucht einfach nicht auf. außerdem frisst mein prog die ganze cpu-leistung.
Kann mir das bitte jemand erklären?
Mfg
KingV1k
da bin ich wieder. also die oben beschriebenen probleme habe ich geschafft zu lösen. dafür habe ich das Makefile.Release bearbeitet.
Dort ersetzte ich -lQtGui4 durch -lQtGuid4. Wieso das jetzt dewegen funktioniert kann ich mir auch nicht erklären. Ich hoffe jemand kennt noch einen anderen Weg dieses Problem zu beheben. Dadurch kommen wir aber schon gleich zu meinem nächsten Problem:
Wenn ich das Prog über Eclipse starte klappt alles perfekt. Aber wenn ich in meinen Ordner gehe dann finde ich die .exe in zwei ordnern (release und debug). führ ich jetzt eine von denen aus dann kann ich das programm in meinem taskmanager sehen, aber sonst nirgendswo. die gui taucht einfach nicht auf. außerdem frisst mein prog die ganze cpu-leistung.
Kann mir das bitte jemand erklären?
Mfg
KingV1k
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Der Unterschied liegt wohl darin, dass im Debug-Mode Debuginformationen mit eingebunden werden, im Release-Mode wohl eher nicht...KingV1k hat geschrieben:Hi Christian81,
ich hab dich nicht ganz verstanden wie du es meintest "Du musst Makefile.Debug bzw. Makefile.Release anstatt Makefile benutzen."
Wo ist den überhaupt der Unterschied zwischen den beiden?
Es sollten daher beide QtGui(d)4 - libs in qt-dir/lib vorliegen. Wenn nicht, hast Du wohl bei configure.exe nur '-debug' angegeben was in diesem Fall dann zu deinem Fehler führt.
In eclipse solltest Du also nicht "Makefile" als Projekt angeben sondern "Makefile.Debug" wenn Du noch entwickelst und dann später "Makefile.Release" wenn Du es ausliefern willst.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Hi,
und was steht in diesen Debuginformationen? Hast du ein Beispiel dafür? (ich habe bei google nichts darüber gefunden).
und was steht in diesen Debuginformationen? Hast du ein Beispiel dafür? (ich habe bei google nichts darüber gefunden).
Ich versteh das noch immer nicht. Was ändert sich dadurch bei der Benutzung? Wie meinst du Makefile.Debug benutzen? Nur die Änderungen in dieser Makefile.Debug machen anstatt in der Makefile? Oder wie benutze ich die Makefile.Debug? Was für Vorteile bringt es die Makefiles zu unterscheiden?In eclipse solltest Du also nicht "Makefile" als Projekt angeben sondern "Makefile.Debug" wenn Du noch entwickelst und dann später "Makefile.Release" wenn Du es ausliefern willst.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Nunja - was wird schon beim debug-Build anders sein? Ich schätze mal damit kann man besser debuggen...
Und warum man immer nur eins der Makefiles in Eclipse nehmen sollte - das Kompilieren dauert sonst länger, was beim Entwickeln doch schon nervt., und der Release-Build hat im Grunde da auch keinen Sinn.
Und die Makefiles sollte man auf keinen Fall von Hand ändern sondern immer qmake dafür benutzen.
Und warum man immer nur eins der Makefiles in Eclipse nehmen sollte - das Kompilieren dauert sonst länger, was beim Entwickeln doch schon nervt., und der Release-Build hat im Grunde da auch keinen Sinn.
Und die Makefiles sollte man auf keinen Fall von Hand ändern sondern immer qmake dafür benutzen.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Ich hab gradeben bisschen den Unterschied der beiden Makefiles angeguckt. Dabei ist mir aufgefallen:
Makefile.Debug:
LIBS = -L"y:\Projekt\qt-win-opensource-src-4.2.0\qt-win-opensource-src-4.2.0\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4
Makrfile.Release:
LIBS = -L"y:\Projekt\qt-win-opensource-src-4.2.0\qt-win-opensource-src-4.2.0\lib" -lmingw32 -lqtmain -lQtGui4 -lQtCore4
Für die denen es nicht aufgefallen ist bei Debug steht ein "d" immer angehangen. bei release nicht.
1. Also wenn Makefile.Debug einfach nur besser zum debugen sein soll, dann kann ich ja auch einfach nur release nehmen. (dadurch sollte das compilen schneller gehen. oder?)
2. Normalerweise werden ja immer beide Makefiles erzeugt und benutzt. Was ist wenn ich jetzt aber nur eins benutzen will? in der pro-file haben ich dafür keinen eintrag gefunden. und in der makefile sollte man es eigentlich nicht ändern. wie soll ich es sonst machen?
Makefile.Debug:
LIBS = -L"y:\Projekt\qt-win-opensource-src-4.2.0\qt-win-opensource-src-4.2.0\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4
Makrfile.Release:
LIBS = -L"y:\Projekt\qt-win-opensource-src-4.2.0\qt-win-opensource-src-4.2.0\lib" -lmingw32 -lqtmain -lQtGui4 -lQtCore4
Für die denen es nicht aufgefallen ist bei Debug steht ein "d" immer angehangen. bei release nicht.
1. Also wenn Makefile.Debug einfach nur besser zum debugen sein soll, dann kann ich ja auch einfach nur release nehmen. (dadurch sollte das compilen schneller gehen. oder?)
2. Normalerweise werden ja immer beide Makefiles erzeugt und benutzt. Was ist wenn ich jetzt aber nur eins benutzen will? in der pro-file haben ich dafür keinen eintrag gefunden. und in der makefile sollte man es eigentlich nicht ändern. wie soll ich es sonst machen?
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Das ist der Sinn der Übung...KingV1k hat geschrieben: Für die denen es nicht aufgefallen ist bei Debug steht ein "d" immer angehangen. bei release nicht.
Nein, im Gegenteil - im Release wird das executable noch optioniert, das Compilieren dauert also länger. Ausserdem kann man das executable dann nicht debuggen...KingV1k hat geschrieben: 1. Also wenn Makefile.Debug einfach nur besser zum debugen sein soll, dann kann ich ja auch einfach nur release nehmen. (dadurch sollte das compilen schneller gehen. oder?)
Man nehme die qmake-Doku und lese: http://doc.trolltech.com/4.2/qmake-vari ... tml#config2. Normalerweise werden ja immer beide Makefiles erzeugt und benutzt. Was ist wenn ich jetzt aber nur eins benutzen will? in der pro-file haben ich dafür keinen eintrag gefunden. und in der makefile sollte man es eigentlich nicht ändern. wie soll ich es sonst machen?
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
ok das compilen klappt ja inzwischen mit der debug-version, aber mein problem ist das ich mein programm aus eclipse aus starten kann. aber nicht anders. Wenn ich es normal starte dann startet es nur im hintergrund und bringt meine cpu-auslastung auf 100%. und ich glaube nicht das es an den 833 MHz meines Rechners liegt.
Mfg
KingV1k
edit:
oder muss man die release-version starten damit es klappt? kann ich im moment nicht testen, weil ich qt neu compile und das dauert noch bisschen.
Mfg
KingV1k
edit:
oder muss man die release-version starten damit es klappt? kann ich im moment nicht testen, weil ich qt neu compile und das dauert noch bisschen.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten: