Qt4 unter Windows: keine Konsolen-Fenster verwenden

Alles rund um die Programmierung mit Qt
Antworten
KarlBlau
Beiträge: 41
Registriert: 25. März 2005 14:31
Wohnort: Karlsruhe
Kontaktdaten:

Qt4 unter Windows: keine Konsolen-Fenster verwenden

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn man schon seine eigenen Makefiles baut, sollte man sich auch mit den Kommandozeilenparametern auskennen...
SUBSYSTEM
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
KarlBlau
Beiträge: 41
Registriert: 25. März 2005 14:31
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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'
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
KarlBlau
Beiträge: 41
Registriert: 25. März 2005 14:31
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

CMakeLists.txt - man muss 'WIN32' zum ADD_EXECUTABLE hinzufügen -> siehe hier
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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
lightning.net
Beiträge: 12
Registriert: 24. September 2006 01:46

Beitrag 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;

};
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten