VS2008下利用#pragma comment屏蔽程序运行时产生的CMD窗口

2016-6-1日注:此种方法并不适用于VS2012,在VS2012中屏蔽CMD的方法可以参见我的另一篇博文,链接如下:

https://blog.csdn.net/wenhao_ir/article/details/51554944

有时我们的exe程序并不需要CMD窗口打印输出信息,所以我们需要屏蔽它。那么怎么屏蔽它呢?

在VS2008下利用预编译指令#pragma comment就可以屏蔽CMD窗口,下面是具体方法。

咱们只需要在cpp文件的预编译部分加上下面这个语句即可实现对CMD控制台的屏蔽~

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

或者也可以把参数加上双引号:

#pragma comment(linker,"/subsystem:\"windows\"/entry:\"mainCRTStartup\"") 注意,其中的反斜杠是转义字符!

如下图所示:

下面补充说明下这个语句~

#pragma 是C和C++的预编译指令,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作,说白了就是对编译器作设置的。

comment()中的参数挺多,具体有哪些参数,请大家自行百度。

下面说说linker的参数语句

"/subsystem:windows /ENTRY:mainCRTStartup"

操作系统装载应用程序后(比如我们利用VC生成的exe),做完初始化工作就转到程序的入口点执行。程序的默认入口点实际上是由连接程序设置的,不同的连接器选择的入口函数也不尽相同。在VC下,连接器对“控制台类型的程序”设置的入口函数是 mainCRTStartup,mainCRTStartup 运行后再调用你自己编写的 main 函数。

虽然“控制台类型的程序”的入口函数都是 mainCRTStartup,但是具体设置哪个入口点是由连接器的“/subsystem:”选项参数确定的,它告诉操作系统如何运行编译生成的.EXE文件。可以指定四种方 式:“CONSOLE|WINDOWS|NATIVE|POSIX”如果这个选项参数的值为“WINDOWS”,则表示该应用程序运行时不需要控制台,所以以上的设置就屏蔽了CMD控制台。

下图是没有写屏蔽语句时的截图:

可见,是有CMD控制产生的。

下图是写上屏蔽语句时的截图:

可见是没有控制台产生的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值