当我运行c ++程序时,我不希望控制台出现

时间:2012-03-08 14:02:18

标签: c++ windows

我想写一个c ++程序,编译和链接.cpp给出.exe文件。如果我双击并执行它,控制台将被打开和关闭。我不希望该控制台出现。请帮助。

7 个答案:

答案 0 :(得分:18)

Windows程序有两种方法可以生成控制台窗口:

  • 程序链接为控制台子系统exe,这是对Windows始终提供关联控制台窗口的请求。

  • 程序的代码本身会创建一个控制台窗口。

第一个选项,即控制台子系统,是最有可能的。

使用MinGW g ++编译器只需添加选项

-mwindows

使用Visual C ++编译器,如果要从命令行进行编译,请添加选项

/link /subsystem:windows /entry:mainCRTStartup

如果您是using Visual Studio,请将子系统更改为Windows,并在链接器选项中将入口点更改为mainCRTStartup

使用Microsoft的编译器,可以更容易地链接到包含WinMain函数的模块,该函数本身是非标准启动函数,并且违反C ++标准调用普通标准{{1 }}。那是因为使用GUI子系统(子系统“windows”)微软的编译器,而不是g ++,默认情况下不识别标准main。它只是一个微软的东西(大概是它开始作为供应商锁定的东西)。

答案 1 :(得分:2)

听起来您需要将Windows Visual Studio项目设置更新为不是控制台应用程序。

如果不是这种情况,请发布有关您的环境和工具的更多信息。

答案 2 :(得分:1)

如果要使用隐藏控制台创建控制台类型程序,请将其作为主例程的第一行:

ShowWindow( GetConsoleWindow(), SW_HIDE );

答案 3 :(得分:1)

较弱的先决条件:

如果您的程序没有控制台子进程,只需 FreeConsole(); 应该这样做。

其他

需要一个(隐藏的)窗口,以便没有子进程的控制台弹出窗口,即如上所述

ShowWindow (GetConsoleWindow(), SW_HIDE);

答案 4 :(得分:0)

如果您无法移动到Window应用程序(我的意思是GUI),因为有时您可能需要使用控制台输出,您可以使用以下代码来隐藏控制台窗口:

HWND hWnd = GetConsoleWindow();
ShowWindow(hWnd, SW_HIDE);

答案 5 :(得分:0)

确保在编译和链接期间定义_WINDOWSWINDOW。 (取决于您的环境)。

在命令行上,您可以按照以下步骤执行此操作

cl -D_WINDOWS  program.cpp

答案 6 :(得分:0)

在CODEBLOCKS上,除了@ravenspoint所说的,你必须把这一行放在你的第一行代码上:

#define _WIN32_WINNT 0x0501 //this is for XP

然后:

ShowWindow (GetConsoleWindow(), SW_HIDE);