在控制台出现之前隐藏控制台 C++

4

如何在没有控制台的情况下运行C++代码?

ShowWindow(GetConsoleWindow(), SW_HIDE);隐藏了窗口,但之后它又出现了。

在运行程序之前,我能不能加入一行完全隐藏控制台的代码?


1
在MinGW上,使用“-mwindows”编译会禁用控制台。MSVC可能有类似的功能。 - HolyBlackCat
这个回答解决了你的问题吗?[C ++如何在启动时隐藏控制台窗口?] (https://dev59.com/YmMl5IYBdhLWcg3woYEu) - Asteroids With Wings
2
这是特定于平台的,因为C++没有“控制台”的概念。能否在问题中添加您的操作系统?同时最好也包括您运行程序的方法。(可能您不是从命令行运行,而是从集成开发环境中启动?) - JaMiT
1个回答

3

你可以在包含头文件之前,设置此pragma到包含main方法的文件的顶部:

#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")

这也可以通过链接器选项来完成:

/SUBSYSTEM:windows
/ENTRY:mainCRTStartup

作为替代方案,在Visual Studio中,将项目子系统更改为 Windows (/SUBSYSTEM:WINDOWS),方法是在 项目属性-连接器-系统-子系统 中进行设置。这样做后,请使用 WinMain 签名而不是 main 签名:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){
    // Your code here.
    return 0;
}

Subsystem settings.


此外,如果您想要一个跨平台的解决方案,因为问题并没有真正指定目标操作系统,您可以使用预处理器定义区分Windows和非Windows系统。例如,一种方法是使用#ifdef _WIN32、#define、#endif和#ifndef将WinMain和所需的Windows头文件包装起来。在Unix系统中,您可以简单地使用main方法,控制台不会出现。有关更详细的预处理器定义列表,您可以在这里查看。 - Fabio Crispino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接