VC控制台程序不显示控制台

编译完全攻略:编译器处理及LNK错误的解决方法[good!!]   最近调试遇到N多LNK错误,遂总结各解决方案如下, 以做系统学习之用。一编译器处理相关 .预处理器-编译器-汇编器-链接器预处理器会处理相关的预处理指令,一般是以"#"开头的指令。如:#include "xx.h" #define等。编译器把对应的*.cpp翻译成*.s文件(汇编语言)。 汇编器则处理*.s生成对应的*.o文件(obj目标文件)最后链接器把所有的*.o文件链接成一个可执 阅读详情

http://bbs.youkuaiyun.com/topics/380247251


大家都知道,当编写一个win32 console application时,当运行此类程序的时候默认情况下会有一个类似dos窗口的console窗口,但是有的时候我们只想在程序中运行一段功能代码,不希望显示这个console窗口,让代码执行完毕之后程序自动退出.下面就介绍一下,如何隐藏win32 console application的console窗口 .


因为此种方法是通过设置编译器的链接开关来实现,所以让我们来看一下编译器的链接开关选项(也就是linker选项).

首先我们来看一下linker的 /subsystem 选项该选项的语法形式如下:
/subsystem:{console|efi_application|efi_boot_service_driver|
efi_rom|efi_runtime_driver|native|posix|windows|windowsce}
[,major[.minor]]

这个链接选项告诉操作系统如何运行可执行文件

console:  win32 字符模式应用程序,此种类型的应用程序在运行的时候会产生一个类似dos窗口的控制台窗口,如果在应用程序的主函数为main()或者wmain(),在默认情况下该应用程序就是一个控制台应用程序.

extensible firmware interface 和cpu具体架构相关的一个参数选项,并不常用,在这里暂不详细介绍.
如果对此有兴趣的可以访问intel主页来查看相关内容

native;设备驱动器选项,如果/driver:wdm选项被设定的话,该链接选项(native)就为默认选项

posix: 在windows nt 种运行在posix子系统上的应用程序

windows:该类型的应用程序不产生console窗口,该类型的应用程序的窗口由用户自己创建,简而言之
就是一个标准的win32 application,其入口地址为winmain()函数或者wwinmain()函数的地址
如果你在应用程序种定义的主函数为winmain或者wwinmain,在默认情况下该应用程序就是一个
win32 application !

windowsce:运行在windows ce上的应用程序

major and minor (optional):主版本号和次版本号,该选项为可选,该选项为0~65535之间的十进制整数 

从上面可以看出如果我们建立一个win32 console application的话,linker的/subsystem选项应该为
console,可以在vc开发环境的project->setting->link->project option中看到!

接下来我们再看看应用程序是如何运行的!

我们知道用vc编写的程序,运行的时候是需要 cc 运行库支持的.当我们运行一个c/c 程序的时候链接器会首先寻找应用程序的启动函数,例如:

如果你建立了一个console程序的话,编译器得链接开关会是以下这种形式
/subsystem:console /entry:maincrtstartup (ansi)
/subsystem:console /entry:wmaincrtstartuup (unicode)

如果你建立了一个win32 application,编译器得链接开关则会是一下形式
/subsystem:windows /entry:winmain (ansi)
/sbusystem:windows /entry:wwinmain (uincode)

上面的两种形式可以再project->setting->link->project option中看到,上面的subsystem和entry并不需要都设置,如果你只设置了/subsystem:console的话,那么默认的entry开关在默认情况下应为/entry:maincrtstartup.反之,如果你在应用程序中定义了main函数的话,默认情况下,你/subsystem开关应该为/system:console.

在默认情况下/subsystem 和/entry开关是匹配的,也就是console对应maincrtstartup或者wmaincrtstartup.windows对应winmain或者wwinmain.但是我们也可以通过手动改动的方式使他们不匹配.例如我们可以这样改动

#pragma comment( linker, /subsystem:windows /entry:maincrtstartup ) // 设置入口地址 
int main(int argc, char* argv[])
{
    messagebox(null, hello, notice, mb_ok);
return 0;
}

在默认情况下链接器看到/subsystem下是windows选项的时候,它会自动寻找winmain或者wwinmain
但我们强制指定入口地址,这样运行程序的时候默认的console窗口就会隐藏!

上面是在代码中使用#pragma指令来设置,还有一种就是直接在开发环境的
project->setting->link->project option中手工改动!

总结如下:
1:如果console程序已经写好了,不能改了,也可以。写一个API程序,不要画窗口,然后用CreateProcess调用写好的console程序,把属性设成SW_HIDE即可。
2:不能用控制台来写(CONSLOE),要用WINMAIN做入口就可以了,不画窗口,别人就都看不见了. 你只用想想办法把你的进程在任务栏里面隐藏住就可以.
3:如果是console程序,用API函数GetStdHandle()获得控制台程序的窗口句柄,然后在隐藏窗口
4://这一句隐藏控制台 
#pragma   comment(linker,   "/subsystem:\"windows\"   /entry:\"mainCRTStartup\""   ) 
你要写控制台程序就用这个.在控制台程序中隐藏控制台窗口!
第一个panda3d C++程序 panda3d c++ helloworld; 阅读详情

相关推荐

操作系统实验报告 实验一 WINDOWS进程初识

操作系统教程 实验指导书 实验一 WINDOWS进程初识 1、 实验目的 (1) 学会使用VC编写基本的Win32 Consol Application(控制台应用程序)。 (2) 掌握WINDOWS API的使用方法。 (3) 编写测试程序,理解用户态运行和核心态运行。

操作系统——Windows 进程管理

操作系统课设:实验一

CSH__的博客 2793

iPhone用户必看:TrollStore巨魔商店在线安装保姆级教程(iOS 14-16.6.1适用)

本文为iOS 14至16.6.1系统的iPhone用户提供了一份详细的TrollStore(巨魔商店)在线安装教程。文章从核心原理、安装前准备讲起,逐步详解了通过Safari浏览器获取安装器、信任企业证书、部署TrollStore及关键后置配置的全过程,并附带了常见问题排错指南,帮助用户安全、高效地实现无需越狱安装第三方应用。

h0i1j2k3l的博客 1991

Windows下Console和Win32程序差异

在Windows操作系统平台下,我们经常会碰到2中方式的程序设计:console和win32。相信有思想的朋友都会有这样一个疑问,为什么console程序会弹出一个黑框框。当然,以前我一直认为它是控制台程序,他当然有一个黑框框,这是一个逃避问题的想法,不想去追本溯源,找到问题的最根源。我觉得这样不行,突然有天我决定要搞清楚他们之间的关系,在windows操作系统...

weixin_33966095的博客 303

关于RT-Thread中PWM无法正常输出的学习

按照官方的PWM配置,并没有输出PWM,网上有比较多的办法,试了很多,有些还是不能实现输出,这里做个记录。记录自己完成PWM输出的过程,以及修改的地方。 关于STM32CubeMX配置就不多说了,网上有很多。 首先必定是按照流程来,一定一定按照流程来!!! 需要注意的是加上通道数!!!! 这是流程上没有的,也是RTT的一点小BUG吧 配上board.c中添加的代码,我用的是PA2定时2的通道3,需要使用的朋友修改对应定时器和GPIO! void HAL_TIM_Base_MspInit(TIM_Han

weixin_42566346的博客 3554

机器学习: 共轭梯度算法(PCG)

今天介绍数值计算和优化方法中非常有效的一种数值解法,共轭梯度法。我们知道,在解大型线性方程组的时候,很少会有一步到位的精确解析解,一般都需要通过迭代来进行逼近,而 PCG 就是这样一种迭代逼近算法。 我们先从一种特殊的线性方程组的定义开始,比如我们需要解如下的线性方程组: Ax=bAx=b 这里的 A(n×n)A(n×n) 是对称,正定矩阵, b(n×...

weixin_30807677的博客 3181

VC++技巧 在控制台程序中隐藏控制台窗口

大家都知道,当编写一个win32 console application时,当运行此类程序的时候默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序中运行一段功能代码,不希望显示这个console窗口,让代码执行完毕之后程序自动退出.下面就介绍一下,如何隐藏win32 console application的console窗口因为此种方法是通过设置编译器的链接开

renwotao2009的专栏 2753

轮式并联五连杆下肢机器人运动控制:从建模到强化学习仿真训练

本文提出了一种基于强化学习的轮式并联五连杆下肢机器人运动控制方法。首先建立了机器人的运动学和动力学模型,推导了正逆解公式,并构建了URDF模型。随后在PyBullet仿真环境中搭建了包含复杂地形的训练场景,设计了基于PPO算法的端到端控制策略,包含状态空间、动作空间和奖励函数的详细设计。通过多组仿真实验验证了该方法在台阶攀爬等任务中的有效性,为轮腿机器人运动控制提供了完整的可复现技术方案。

huanghm88的专栏 347

Win32 Consle Application中使用MFC类

一.新建一个Win32 Consle Application工程:GetCurrentTime。二.打开“Project”菜单——〉“Setting”菜单项——〉General选项卡在Microsoft Fountion Classes:中选择:Use MFC in Static Library.三.再在C/C++选项卡中的在Category中选择Code Generation

loadstar_kun的专栏 1151

[cshell]个性化配置你的cshrc/tcshrc

本文介绍了csh/tcsh shell的配置优化方法,主要包括:1. 配置文件管理(全局和个人配置);2. 按键绑定设置(解决远程登录按键问题);3. 提示符个性化(包含颜色配置方案);4. 环境变量设置(如LSCOLORS、CLICOLOR等);5. 安全防护措施(防误删、防覆盖等);6. 实用alias命令集(简化操作、提高效率)。文章提供了详细的配置示例,并建议通过man tcsh获取更多帮助信息。这些配置能显著提升shell使用体验和工作效率。

元直的博客 6113

Eclipse邂逅Deepseek:本地化部署全攻略

通过前面一系列的步骤,我们成功地在 Eclipse 中完成了 Deepseek 的本地化部署,并且对部署后的功能进行了测试和优化,还解决了可能遇到的一些常见问题。这一过程不仅让我们体验到了将强大的大语言模型与高效的开发环境相结合的魅力,也为我们在软件开发过程中带来了诸多便利。本地化部署 Deepseek 到 Eclipse,使得我们在代码编写过程中能够获得智能的代码补全和精准的问答支持,大大提高了开发效率。同时,本地化部署保障了数据的安全性和隐私性,避免了数据在传输过程中可能面临的风险。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 4516

C\C++控制台程序隐藏方法总结

学习编程

lynch0571的专栏 3万+

Yield Management软件:Lam Research二次开发_(5).缺陷分析与分类方法

在半导体制造过程中,缺陷分析和分类是提高良率管理(Yield Management)的关键步骤。通过准确地识别和分类缺陷,可以更好地理解工艺过程中的问题,从而采取有效的措施来提高生产效率和产品质量。本节将详细介绍缺陷分析和分类的方法,包括缺陷检测、特征提取、分类算法及其在Lam Research软件中的应用。

2401_87715305的博客 690

vc不显示控制台程序命令窗口

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )//不显示控制台程序命令窗口 放到main之前

xiapang009的专栏 1542

WCK Operation (WCK 操作)

LPDDR6 SDRAM采用双时钟系统(WCK和CK),其中WCK频率是CK的两倍。为确保数据正确传输,需通过WCK2CK同步操作使两种时钟对齐。LPDDR6支持两种同步模式:Auto-sync off模式和WCK Always on模式,可通过MR22寄存器选择。同步操作由特定命令(Read/Write/MRR等)触发,需在满足特定时序参数(如tWCKENL、tWCKPRE等)后完成。同步前必须完成WCK2CK训练,且不同操作(读取/写入/CAS)有各自的时序要求。该机制确保数据在正确时钟相位下传输,是L

李家小院 649

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

VC 控制台程序如何不显示控制台窗口

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"") int main() { } ...

chuangyi2745的博客 845

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VC无窗口控制台程序

VC无窗口控制台程序 #pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"") 如果使用Unicode字符集,mian可以修改为wmain; 以上代码加入你的头文件stdafx.h或其他头文件中就不会有控制台窗口了。原理:VC 控制台应用程序入口点为cmd窗口后才进入main函数。而上...

diaomo9737的博客 305

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

在VC中编译、运行程序的小知识点

原地址:http://topic.youkuaiyun.com/t/20050428/22/3974737.html        最近我抽空研究、整理了一下VC中几个以前比较模糊的问题,写成这篇短文,希望和碰到过类似问题的朋友共享。   如果我的理解有不正确的地方,欢迎大家指正。     文章的3、4小节参照了vcforever的专栏(http://blog.youkuaiyun.com/vcforever/arc

WhyGoSoFar的专栏 763

如何在VC运行环境下不出现press any key to continue

如何在VC运行环境下不出现press any key to continue  (如何在DOS系统中不是立刻结束执行) 方法:在程序末尾加一个getch();  注意加头文件conio.h 解析: getch(): 所在头文件:conio.h 函数用途:从控制台读取一个字符,但不显示在屏幕上 函数原型:int getch(void) ...

weixin_42072280的博客 5053

写了一个专门用于控制台环境下输入密码的程序。。

  写了一个专门用于控制台环境下输入密码的程序。。   特点:1、这是不回显的,也就是说,你输入的密码会以*的形式出现。     2、仅支持数字和字母的组合,区分大小写,以回车键结束输入。     3、仅限VC7.1以上的版本可用。#include #include #include using namespace std;c

okadler0518的专栏 668

在VC中编译、运行程序的小知识点(VC6中编译、运行程序选项)

在VC中编译、运行程序的小知识点1、Run-Time LibraryRun-Time Library是编译器提供的标准库,提供一些基本的库函数和系统调用。我们一般使用的Run-Time Library是C Run-Time Libraries。当然也有Standard C++ libraries。 C Run-Time Libraries实现ANSI C的标准库。VC安装目录的CRT目录有

roger007的专栏 1696

VC,VB程序按钮、图标样式美化

此处的“美化”指的不是通过代码进行美化你的程序。关于想进一步优化自己的程序界面的,不妨去了解下SkinSharp吧。本文提及的是利用第三方资源编辑软件在不更改程序任何框架和代码的前提下实现对界面的简单美化。 1、Windows2000按钮样式转为Windows XP按钮样式 两种按钮的差别比较容易区分,典型的就是VC6和VS2010开发出的MFC程序界面。前者的按钮是黑白的,后者有渲染效果

ROVAST的专栏 9374

用VC让程序不产生控制台界面

用vc建立的控制台应用程序,执行后一般都会弹出一个控制台窗口,有时为了调试或其它目的,需要将其隐藏,在程序中加入下面的预编译代码即可。#pragma comment(linker, "/subsystem:windows /entry:mainCRTStartup" )也可以在project settings->link->output中指定后者,后者在option中设定。或直接都在下面的

JEFF TECH NOTE 1425

Visual Studio 调试程序不显示控制台

Visual Studio 调试程序不显示控制台

Albert_H的博客 1万+

VC中如何让控制台程序不弹出DOS窗口

project->settings->link,category选output,在project options里把/subsystem:console改为/subsystem:windows.然后Entry-point symbol里填mainCRTStartup就行了

songliying001的专栏 1309

VC Console(控制台)程序如何隐藏CMD窗口

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) #include#include#include#include#pragma comment( linker, "/sub

fysy0000的专栏 7334
上一篇: WP7中几种图片的Strech方式
下一篇: cocos2dx在IOS中设置横竖屏
RabbitLBJ
博客等级 码龄18年 46粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值