2010-12-14 48 views
0

J'ai un projet VS2010 C++ exe que je veux compiler pour que le drapeau "DOS EXE" dans l'en-tête de l'exe soit mis à false. C'est (espérons-le) pour éviter la création d'un CONHOST.exe lorsque l'exécutable est exécuté. L'exe n'a pas d'interface utilisateur.Comment compiler un projet C++ avec l'en-tête "DOS EXE" flag == false?

Pour le moment, j'appelle ::FreeConsole au démarrage, pour se débarrasser du processus CONHOST.exe, mais je préférerais que si le CONHOST.exe n'a jamais été créé en premier lieu.

Comment est-ce que je peux faire ceci?

Suite à la réponse choisie, je fixe jusqu'à mon code en ajoutant un WinMain qui appelle par la principale, existant comme suit:

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow) 
{ 
    int argc; 
    LPWSTR* argv = CommandLineToArgvW(pCmdLine, &argc); 
    _tmain(argc, argv); 
    LocalFree(argv); 
} 

Répondre

2

Vous pouvez essayer de changer la valeur SubSystem dans les options de l'éditeur de liens de CONSOLE à WINDOWS. Cela empêchera le compilateur de générer du code supportant la console dans le binaire. Notez que vous devrez utiliser la fonction WinMain() au lieu de main()