web-dev-qa-db-fra.com

Masquer la console de l'application Windows

J'ai une application Qt, et lorsque j'exécute cette application, une console s'ouvre derrière celle-ci. En développement, c’est bien parce que je vois des sorties de débogage sur la console, mais lorsque je veux donner cet exécutable au client, il ne devrait pas y avoir de fenêtre de console.

(J'utilise Visual Studio 2008)

46
ufukgun

Il semble que votre configuration de l'éditeur de liens soit incorrecte. Cliquez avec le bouton droit sur le projet, Propriétés, Éditeur de liens, Système, paramètre Sous-système. Assurez-vous que "Windows" est sélectionné, pas "Console".

Et changez main () en WinMain ().

49
Hans Passant

Dans le jeu d'options de l'éditeur de liens de construction du projet

/SUBSYSTEM:windows
/ENTRY:mainCRTStartup

Ou utilisez le #pragma suivant dans le fichier source avec le int main(...)

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

Vous pouvez vous débarrasser de la console en appelant:

FreeConsole();
15
Daniel Muñoz

j'utilise cette méthode et cela a fonctionné 

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

Solution suivante;)

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

  1. Définissez les paramètres de projet/les propriétés de configuration/l'éditeur de liens/le système/le sous-système = Windows (/ SUBSYSTEM: WINDOWS).

    Mais pour x64 il y a une erreur de l'éditeur de liens: LNK2019: symbole externe non résolu _WinMain référencé dans la fonction _WinMainCRTStartup " Pour l'éviter

  2. Remplacez le code suivant:

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

    par

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

Cela fonctionne bien pour les deux plates-formes - Win32 et x64.

7
Oleksiy Tarasyuk

Si vous utilisez Propriétés -> Linker -> Système -> Sous-système | Les fenêtres

Et obtenez une erreur de l'éditeur de liens.

Vous pouvez regarder Linker -> Avancé -> Point d'entrée

et définissez la valeur sur le nom de votre fonction "principale".

C’est votre point d’entrée qui devient principal si votre fonction principale est un "principal".

5
Guest

La meilleure option sera peut-être de ne pas simplement supprimer (comme suggéré par Andy M), mais de modifier le fichier * .pro en ajoutant quelque chose comme:

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

En débogage, vous pouvez voir la fenêtre de la console mais pas dans la version. Je l'aime. =)

5
Wildcat

Je suggère de vérifier la présence de la ligne suivante dans votre fichier .PRO:

CONFIG += console

Si vous pouvez le trouver, retirez-le! Cela devrait régler votre problème!

J'espère que ça aide !

4
Andy M

Aller à: Projects --> Run et décocher la case Run in terminal

0
Artem Zaytsev

Pour ceux qui modifient le fichier .vcxproj directement, vous souhaitez ajouter une SubSystem avec la valeur Windows à votre LinkItemDefinitionGroup comme suit:

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