Console工程下如何不显示控制台黑窗口只显示Windows窗口
2015-11-12 17:28
344 查看
刚学习OpenGL,绘制图形的时候,如果不进行设置,运行的时候会先出现黑窗口再出现Windows窗口。
其实要去除控制台窗口非常简单,只需要修改工程设置,把子系统改成Windows,程序的入口点改成mainCRTStartup。
下面我先把几中解决办法列举出来,再解释下我的理解。
方法一:在程序中加入一句#pragma comment(linker, “/subsystem:\”windows\” /entry:\”mainCRTStartup\””),建议加在include的后面。
方法二:修改工程设置。
对于vc6,地方在Project->setting->Link->Project Options。
点开后的界面如图,
在右下角的Project Options里面找到/subsytem:,并把其后面其后面的参数改成为windows,然后再找到/entry:,把其后面的值改成”mainCRTStartup”,如果找不到就添加,最后的效果是/subsystem:windows /entry:”mainCRTStartup”。
对于vs2008,地方在项目->属性->链接器,
然后在左边选中高级,如图所示,
在最上面的入口点输入mainCRTStartup,再选中系统,如图所示,
在最上面的子系统选择Windows即可了。
为什么这样设置下就可以了了。主要是因为Windows系统下有几种子系统,一种是控制台,一种是窗口子系统,如果建立了控制台工程肯定是要创建控制台子系统程序了,建立了Windows Application和MFC之类的工程则是窗口子系统了。不同的子系统会链接不同的主函数,控制台的会链接main,窗口的会链接WinMain,如果不匹配肯定会链接失败。
现在我们使用OpenGL编程,又建立的是控制台工程,如果不进行设置肯定会出现黑窗口的,所以我们把工程的子系统改成Windows,但是我们不想改主函数为WinMain了,因为这样会很麻烦,所以我们再把程序入口改成mainCRTStartup。同样如果是win32 App工程下,我们可以把子系统改成控制台,再设置程序入口为WinMainCRTStartup,应该就会得到相反的效果了。
其实要去除控制台窗口非常简单,只需要修改工程设置,把子系统改成Windows,程序的入口点改成mainCRTStartup。
下面我先把几中解决办法列举出来,再解释下我的理解。
方法一:在程序中加入一句#pragma comment(linker, “/subsystem:\”windows\” /entry:\”mainCRTStartup\””),建议加在include的后面。
方法二:修改工程设置。
对于vc6,地方在Project->setting->Link->Project Options。
点开后的界面如图,
在右下角的Project Options里面找到/subsytem:,并把其后面其后面的参数改成为windows,然后再找到/entry:,把其后面的值改成”mainCRTStartup”,如果找不到就添加,最后的效果是/subsystem:windows /entry:”mainCRTStartup”。
对于vs2008,地方在项目->属性->链接器,
然后在左边选中高级,如图所示,
在最上面的入口点输入mainCRTStartup,再选中系统,如图所示,
在最上面的子系统选择Windows即可了。
为什么这样设置下就可以了了。主要是因为Windows系统下有几种子系统,一种是控制台,一种是窗口子系统,如果建立了控制台工程肯定是要创建控制台子系统程序了,建立了Windows Application和MFC之类的工程则是窗口子系统了。不同的子系统会链接不同的主函数,控制台的会链接main,窗口的会链接WinMain,如果不匹配肯定会链接失败。
现在我们使用OpenGL编程,又建立的是控制台工程,如果不进行设置肯定会出现黑窗口的,所以我们把工程的子系统改成Windows,但是我们不想改主函数为WinMain了,因为这样会很麻烦,所以我们再把程序入口改成mainCRTStartup。同样如果是win32 App工程下,我们可以把子系统改成控制台,再设置程序入口为WinMainCRTStartup,应该就会得到相反的效果了。
相关文章推荐
- Apache FileUpload文件上传功能
- UIView中的clipsTobounds属性及扩展
- iOS 设置圆形图片、圆角图片
- spring 动态获得bean实例
- markdown编辑器使用练习
- UIScrollView
- #在蓝懿学习iOS的日子#day17
- 本地hosts临时域名访问
- MFC 控件重绘(1)
- java环境变量配置
- 重走一次java-堆栈之int,Integer,String定义变量
- Shell实现每日自动导出AWR报表
- 简单配置 RIP
- 事件的接受与忽略 accept() ignore() protected成员
- PowerShell 之 DHCP server
- 1-11 Raid配置与管理
- SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder"问题
- 最近所用
- Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules
- 移动WebApp之iScroll插件的使用介绍