我想编写一个 C++ 程序,将 .cpp 文件编译并链接后会生成 .exe 文件。当我双击并执行这个文件时,会打开一个控制台窗口并立即关闭。我不希望出现这个控制台窗口,请帮忙解决。
有两种方法可以让Windows程序生成控制台窗口:
将程序链接为控制台子系统exe,这是向Windows发出的一个请求,始终提供关联的控制台窗口。
程序代码本身创建一个控制台窗口。
第一种选项,控制台子系统,最有可能。
使用MinGW g++编译器,只需添加选项
-mwindows
/link /subsystem:windows /entry:mainCRTStartup
mainCRTStartup
。WinMain
函数的模块,该函数本身是非标准启动函数,并违反C++标准调用普通标准main
。这是因为在GUI子系统(子系统“windows”)中,与g++等不同,Microsoft的编译器默认情况下不会识别标准main
。这只是Microsoft的一件事情(大概它起源于供应商锁定)。editbin
更改现有可执行文件的 SUBSYSTEM
类型,或显式调用 link.exe /SUBSYSTEM:WINDOWS /ENTRY:main
。 - jamesdlinlink.exe /SUBSYSTEM:WINDOWS /ENTRY:main
是错误的。对于一个托管的 C++ 程序,你需要一个入口点来 /调用/ main
,例如在执行命名空间范围变量的动态初始化之后。使用 Microsoft 的运行时库,mainCRTStartup
就是一个例子。 - Cheers and hth. - AlfShowWindow( GetConsoleWindow(), SW_HIDE );
听起来你需要更新Windows Visual Studio项目设置,使其不再是控制台应用程序。
如果不是这种情况,请发布有关您的环境和工具的更多信息。
较弱的前提条件:
如果您的程序没有控制台子进程,只需使用FreeConsole();
即可。
否则
为了避免子进程的控制台弹出窗口,需要一个(隐藏的)窗口,即如上所述
ShowWindow(GetConsoleWindow(), SW_HIDE);
_WINDOWS
或WINDOW
(取决于您的环境)。cl -D_WINDOWS program.cpp
#define _WIN32_WINNT 0x0501 //this is for XP
ShowWindow (GetConsoleWindow(), SW_HIDE);
HWND hWnd = GetConsoleWindow();
ShowWindow(hWnd, SW_HIDE);
代码
#include <iostream.h>int main() { cout<<"hahahaaa"; return 0; }代码
- Lokesh Kumar S