我不希望控制台出现在我运行c + +程序

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

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

  • 该程序链接为一个控制台子系统EXE,这是一个请求到Windows总是提供一个关联的控制台窗口。

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

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

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

 -mwindows 

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

 /link /subsystem:windows /entry:mainCRTStartup 

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

使用微软的编译器,只需要连接一个包含一个WinMain函数的模块,这个函数本身就是一个非标准的启动函数,违反C ++标准就会调用普通的标准main函数。 这是因为对于GUI子系统(子系统“窗口”),微软的编译器,而不是像g ++,默认情况下不会识别标准的main 。 这只是一个微软的东西(大概是从一个供应商锁定的东西开始的)。

这听起来像你需要更新您的Windows Visual Studio项目设置不成为控制台应用程序。

如果情况并非如此,请发布有关您的环境和工具的更多信息。

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

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

如果你想创建一个带有隐藏控制台的控制台类型程序,那么把它作为主程序的第一行:

 ShowWindow( GetConsoleWindow(), SW_HIDE ); 

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

在命令行上,你可以这样做,如下所示

 cl -D_WINDOWS program.cpp 

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

 #define _WIN32_WINNT 0x0501 //this is for XP 

接着:

 ShowWindow (GetConsoleWindow(), SW_HIDE);