VS2019控制台程项目如何取消控制台弹出

本文介绍了C++取消控制台弹出的方法。简单来说分两步,在属性页的连接器入口点输入mainCRTStartup,将系统子系统从控制台改为窗口。还详细讲解了Windows入口函数知识,介绍了配置项和代码两种设置方式,最后指出配置项设置入口点报错原因是函数少了w。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单讲,取消控制台弹出只需要两步【23-10-4实测有效】

1、属性页-连接器-入口点–输入:【mainCRTStartup】,意思是:告诉它从哪里执行呢,从显示的CRT的这个地方执行。

2、属性页-系统-子系统,将原来的控制台改为【窗口(/SUBSYSTEM:WINDOWS)】,选项告诉系统如何运行exe,从窗口开始运行,控制台就不会出来了。

再详细讲下知识点

windows的入口函数有两个,WinMain和wWinMainCRTStartup(窗口类的)。

在vc的编译系统中真正的入口函数是,wWinMainCRTStartup,然后才运行WinMain函数入口点。

一、从配置项里设置取消控制台弹出

1、属性页-连接器-入口点–输入:【mainCRTStartup】,意思是:告诉它从哪里执行呢,从显示的CRT的这个地方执行。

2、属性页居然可以查找,查找选项或开关编辑框内输入,子系统,搜出来的选项,将原来的控制台改为【窗口(/SUBSYSTEM:WINDOWS)】,意思是走的是窗口,而不是弹控制台出来了。

二、代码方式设置取消控制台弹出

由子系统和入口函数两个选项,不同组合可以组合出4种搭配。

//注意加空格,+空格+/entry
//1、子系统 窗口 + 入口 窗口入口
#pragma comment (linker,"/subsystem:windows /entry:wWinMainCRTStartup")//测试成功 没有控制台
//2、子系统 窗口 + 入口 命令行入口
#pragma comment (linker,"/subsystem:windows /entry:mainCRTStartup")//测试成功 没有控制台
//3、子系统 控制台 + 入口 命令行入口
#pragma comment (linker,"/subsystem:console /entry:mainCRTStartup")//测试成功 有控制台
//4、子系统 控制台 + 入口 窗口入口
#pragma comment (linker,"/subsystem:console /entry:wWinMainCRTStartup")//测试成功 有控制台

三、发现的问题

发现问题:配置项里入口点设置为WinMainCRTStartup 会报错,代码设置就不会出错,而且代码里设置弹出的控制台和配置项里弹出的控制台样式不一样!

最后找到原因,是函数错了前面少个w【wWinMainCRTStartup】

### 解决Visual Studio 中 Qt 应用序运行时不显示控制台窗口的方法 为了防止 Visual Studio 编译的 Qt 应用序在启动时弹出不必要的控制台窗口,可以调整项目的链接器设置来指定子系统。通过修改项目属性中的链接器选项,可以选择 Windows 子系统而不是控制台子系统。 对于希望仅在调试模式下显示控制台而在发布版本中隐藏的情况,可以通过条件编译实现: ```cpp #ifdef _DEBUG #pragma comment(linker,"/subsystem:console /entry:mainCRTStartup") #else #pragma comment(linker,"/subsystem:windows /entry:mainCRTStartup") #endif // DEBUG ``` 上述代码片段展示了如何利用预处理器指令 `_DEBUG` 来区分不同的构建配置[^3]。当定义了 `_DEBUG` 宏时,链接器会被指示创建带有控制台的应用序;反之,在未定义此宏的情况下(即 Release 版本),则不会关联控制台窗口。 此外,也可以直接在 Visual Studio 的项目属性页面进行相应更改。具体操作路径如下:右键点击解决方案资源管理器里的项目名称 -> 属性(Property) -> 配置属性(Configuration Properties) -> 链接(Linker) -> 系统(System),然后将“子系统(SubSystem)”设为“Windows (/SUBSYSTEM:WINDOWS)”。 #### 示例代码展示 以下是完整的 C++ 文件示例,用于说明如何编写一个既能在 Debug 模式下启用控制台又可以在 Release 模式下禁用它的 Qt 应用序: ```cpp #include <QApplication> #include <QMainWindow> // 控制台开关逻辑 #ifdef _DEBUG #pragma comment(linker,"/subsystem:console /entry:mainCRTStartup") #else #pragma comment(linker,"/subsystem:windows /entry:mainCRTStartup") #endif // DEBUG int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow window; window.setWindowTitle("QT应用序"); window.resize(800, 600); window.show(); return app.exec(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值