我想写一个c ++程序,编译和链接.cpp给出.exe文件。如果我双击并执行它,控制台将被打开和关闭。我不希望该控制台出现。请帮助。
答案 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)
确保在编译和链接期间定义_WINDOWS
或WINDOW
。 (取决于您的环境)。
在命令行上,您可以按照以下步骤执行此操作
cl -D_WINDOWS program.cpp
答案 6 :(得分:0)
在CODEBLOCKS上,除了@ravenspoint所说的,你必须把这一行放在你的第一行代码上:
#define _WIN32_WINNT 0x0501 //this is for XP
然后:
ShowWindow (GetConsoleWindow(), SW_HIDE);