wake-up-neo.com

Konsole der Windows-Anwendung ausblenden

Ich habe eine Qt-Anwendung, und wenn ich diese Anwendung starte, gibt es eine Konsolenöffnung dahinter. In der Entwicklung ist es Nizza, weil ich Debug-Ausgaben auf der Konsole sehe, aber wenn ich diese ausführbare Datei an den Kunden weitergeben möchte, sollte es kein Konsolenfenster geben.

(Ich verwende Visual Studio 2008)

46
ufukgun

Es scheint, dass Ihre Linker-Konfiguration falsch ist. Klicken Sie mit der rechten Maustaste auf die Einstellungen für Projekt, Eigenschaften, Linker, System und Subsystem. Stellen Sie sicher, dass "Windows" ausgewählt ist, nicht "Konsole".

Ändern Sie main () in WinMain ().

49
Hans Passant

In den Linkerstellungsoptionen für das Projekt erstellen

/SUBSYSTEM:windows
/ENTRY:mainCRTStartup

Oder verwenden Sie das folgende #pragma in der Quelldatei mit der int main(...)

#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
92
datenwolf

Sie können die Konsole loswerden, indem Sie Folgendes anrufen:

FreeConsole();
15
Daniel Muñoz

ich benutze diese Methode und es hat funktioniert 

HWND hwnd = GetConsoleWindow();
ShowWindow(hwnd, 0);
12
ufukgun

Nächste Lösung;)

Env: WixXP x64, msvs 2008, Qt v4.5.3

  1. Projekteinstellungen/Konfigurationseigenschaften/Linker/System/SubSystem = Windows festlegen (/ SUBSYSTEM: WINDOWS)

    Für x64 gibt es jedoch einen Linker-Fehler: LNK2019: nicht aufgelöstes externes Symbol _WinMain, auf das in Funktion _WinMainCRTStartup verwiesen wird

  2. Ersetzen Sie den folgenden Code:

    int main(int argc, char *argv[])
    {
         QApplication app(argc, argv);
         // your code*
    }
    

    durch

    int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char*, int nShowCmd)
    {
        int argc = 0;
        QApplication app( argc, 0 );
     }
    

Es funktioniert gut sowohl für Win32- als auch für x64-Plattformen.

7

Wenn Sie Eigenschaften -> Linker -> System -> SubSystem | verwenden Windows

Und bekomme einen Linker-Fehler.

Sie können sich Linker -> Advanced -> Entry Point anschauen.

und setzen Sie den Wert auf den Namen Ihrer "Hauptfunktion".

Das ist Ihr Einstiegspunkt, wenn Ihre Hauptfunktion ein "Haupt" ist.

5
Guest

Vielleicht ist es die bessere Option, nicht einfach zu entfernen (wie von Andy M vorgeschlagen), sondern die * .pro-Datei zu bearbeiten, die etwas hinzufügt

CONFIG(debug, debug|release) {
    CONFIG *= console
} 
else {
    CONFIG -= console
}

Im Debug können Sie das Konsolenfenster sehen, aber nicht in der Version. Ich mag das. =)

5
Wildcat

Ich würde vorschlagen, die folgende Zeile in Ihrer .PRO-Datei zu überprüfen:

CONFIG += console

Wenn Sie es finden können, entfernen Sie es! Es sollte dein Problem beheben!

Ich hoffe es hilft !

4
Andy M

Gehen Sie zu: Projects --> Run und deaktivieren Sie das Kontrollkästchen Run in terminal

0
Artem Zaytsev

Für diejenigen, die das .vcxproj direkt bearbeiten, möchten Sie Ihrer SubSystemWindows eine Link mit dem Wert ItemDefinitionGroup hinzufügen:

<ItemDefinitionGroup>
  <Link>
    <SubSystem>Windows</SubSystem>
  </Link>
</ItemDefinitionGroup>
0
Dogmatixed