Qt4 unter Windows: keine Konsolen-Fenster verwenden
Qt4 unter Windows: keine Konsolen-Fenster verwenden
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.
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.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Wenn man schon seine eigenen Makefiles baut, sollte man sich auch mit den Kommandozeilenparametern auskennen...
SUBSYSTEM
SUBSYSTEM
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
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):
Gruß, K.B.
'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-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
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'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?
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
>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.
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.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Nein, so ist das nichtKarlBlau 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.
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.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
CMakeLists.txt - man muss 'WIN32' zum ADD_EXECUTABLE hinzufügen -> siehe hier
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Besten Dank!Christian81 hat geschrieben:CMakeLists.txt - man muss 'WIN32' zum ADD_EXECUTABLE hinzufügen -> siehe hier
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
-
lightning.net
- Beiträge: 12
- Registriert: 24. September 2006 01:46
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:franzf hat geschrieben:Besten Dank!Christian81 hat geschrieben:CMakeLists.txt - man muss 'WIN32' zum ADD_EXECUTABLE hinzufügen -> siehe hier
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
int WINAPI WinMain(HINSTANCE hinstance,
HINSTANCE prevInstance,
PSTR cmdLine,
int showCmd){
return 0;
};
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
[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.
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.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung