Seite 1 von 1
Qt4 unter Windows: keine Konsolen-Fenster verwenden
Verfasst: 25. Februar 2007 19:43
von KarlBlau
Hi,
die meisten haben wohl das Problem, dass auf der Konsole keine Ausgaben zu sehen sind, obwohl mit cout z.B. eine Ausgabe eingeleitet wurde. In meinem Fall ist es gerade umgekehrt. Ich verwende qmake nicht, sondern baue meine eigenen Makefiles. In meinem Fall ist es nun so, dass sich mit dem Qt-Widget des Programmes automatisch ein Konsolen-Fenster öffnet. Dieses brauche ich jedoch nicht und sieht auch nicht so schick aus. Wie kann ich das ändern?
Gruß, K.B.
Verfasst: 25. Februar 2007 20:45
von Christian81
Wenn man schon seine eigenen Makefiles baut, sollte man sich auch mit den Kommandozeilenparametern auskennen...
SUBSYSTEM
Verfasst: 25. Februar 2007 22:16
von KarlBlau
Wenn man schon was neues lernt, dann soll man es wenigstens von vorn herein können? Oder wie soll der Satz vor 'SUBSYSTEM' verstanden werden?
'subsystem' war trotzdem ein guter Hinweis! Vielen Dank.
Ich hab mir nun folgendes in die Makefile eingebaut (vielleicht hat jemand das gleiche Problem):
Code: Alles auswählen
CONSOLE_VISIBLE := FALSE
ifneq "$(CONSOLE_VISIBLE)" "TRUE"
CXXFLAGS := $(CXXFLAGS) -Wl,-subsystem,windows
endif
Gruß, K.B.
Verfasst: 25. Februar 2007 22:58
von Christian81
KarlBlau hat geschrieben:Wenn man schon was neues lernt, dann soll man es wenigstens von vorn herein können? Oder wie soll der Satz vor 'SUBSYSTEM' verstanden werden?
Nein, aber entweder man benutzt die Tools die einen gegeben werden und weiss wie sie zu benutzen sind oder nicht. Das hat nichts mit 'von vorn herein wissen' sondern mit 'Wenn man schon seine eigenen Makefiles bauen will sollte man auch die benutzten Kommandos kennen zumal alles ordentlich dokumentiert ist'
Verfasst: 25. Februar 2007 23:16
von KarlBlau
>Nein, aber entweder man benutzt die Tools die einen gegeben werden [z.B. Makefiles] und weiss wie sie zu benutzen sind oder nicht.
Alles klar, man weiss es also ... oder halt nicht.
>zumal alles ordentlich dokumentiert ist
Ich stimmte zu, aber nur wenn man die richtigen Stichwörter kennt - z.B. 'SUBSYSTEM'.
K.B.
Verfasst: 26. Februar 2007 06:57
von Christian81
KarlBlau hat geschrieben:>Nein, aber entweder man benutzt die Tools die einen gegeben werden [z.B. Makefiles] und weiss wie sie zu benutzen sind oder nicht.
Alles klar, man weiss es also ... oder halt nicht.
Nein, so ist das nicht
Ich sehe das so - wenn man schon eigene Makefiles bauen muss obwohl es genug gute Tools dafür gibt sollte man die benutzten Befehle kennen oder zumindest schlau genug sein sich die entsprechenden Optionen irgendwo beschaffen zu können. Sei es durch die Doku oder einfach durch das Erstellen von Makefiles per qmake mit den beiden Optionen.
Verfasst: 26. Februar 2007 09:18
von franzf
Weil es gerade passt:
Ich benutze CMake, und hab unter Windows das gleiche Problem.
In der offiziellen Doku konnt ich nix dazu finden (zumindest nicht per suche).
Was muss ich in die CMakeLists.txt eintragen?
Besten Dank
Franz
Verfasst: 26. Februar 2007 09:47
von Christian81
CMakeLists.txt - man muss 'WIN32' zum ADD_EXECUTABLE hinzufügen -> siehe
hier
Verfasst: 26. Februar 2007 11:02
von franzf
Christian81 hat geschrieben:CMakeLists.txt - man muss 'WIN32' zum ADD_EXECUTABLE hinzufügen -> siehe
hier
Besten Dank!
Die Faq + Wiki + Doku hab ich ja herangezogen, dass ich aber nach "Why am I getting a linker error to _mainCRTStartup under WIN32" schauen sollte konnte ich nicht ahnen
Danke
Franz
Verfasst: 26. Februar 2007 12:53
von lightning.net
franzf hat geschrieben:Christian81 hat geschrieben:CMakeLists.txt - man muss 'WIN32' zum ADD_EXECUTABLE hinzufügen -> siehe
hier
Besten Dank!
Die Faq + Wiki + Doku hab ich ja herangezogen, dass ich aber nach "Why am I getting a linker error to _mainCRTStartup under WIN32" schauen sollte konnte ich nicht ahnen
Danke
Franz
Wenn es keine Konsole-Anwendung ist, verlangt der Compiler soviel ich weis eine andere Start-Funktion. Versuch mal int main() mit das hier zu ersetzen:
int WINAPI WinMain(HINSTANCE hinstance,
HINSTANCE prevInstance,
PSTR cmdLine,
int showCmd){
return 0;
};
Verfasst: 26. Februar 2007 13:02
von Christian81
[quote="lightning.net"]
Wenn es keine Konsole-Anwendung ist, verlangt der Compiler soviel ich weis eine andere Start-Funktion. Versuch mal int main() mit das hier zu ersetzen/quote]
Nicht bei Qt. Deshalb gibt es ja mit cmake dieses Problem ab und zu. WIN32 führt dazu, dass noch qtmain(ds).lib hinzugelinkt wird welche eine korrekte WinMain() enthält und die eigentliche main() - Funktion korrekt aufruft.