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

I dont want console to appear when i run c++ program

本文关键字:希望 控制台 运行 c++ 程序      更新时间:2023-10-16

我想写一个c++程序,编译并链接.cpp给出的.exe文件。如果我双击它并执行它,控制台就会打开和关闭。我根本不想让那个控制台出现。请帮忙。

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

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

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

到目前为止,第一个选项控制台子系统是最有可能的。

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

-mwindows

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

/link /subsystem:windows /entry:mainCRTStartup

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

使用微软的编译器,可以更容易地与包含WinMain函数的模块链接,该函数本身就是一个非标准的启动函数,并且违反C++标准调用普通标准main。这是因为对于GUI子系统(子系统"windows"),微软的编译器,与g++相反,默认情况下不会识别标准main。这只是微软的一件事(大概是从供应商锁定开始的)。

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

ShowWindow( GetConsoleWindow(), SW_HIDE );

听起来你需要更新你的Windows Visual Studio项目设置,使其成为一个控制台应用程序。

如果不是这样,那么请发布更多关于您的环境和工具的信息。

较弱的先决条件:

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

其他

需要一个(隐藏的)窗口,这样子进程就不会弹出控制台,即上面提到的

ShowWindow (GetConsoleWindow(), SW_HIDE);

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

在命令行上,您可以按照以下进行操作

cl -D_WINDOWS  program.cpp

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

#define _WIN32_WINNT 0x0501 //this is for XP

然后:

ShowWindow (GetConsoleWindow(), SW_HIDE);

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

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