博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
#pragma comment linker 下的 /subsystem:windows 与 /subsystem:console
阅读量:5862 次
发布时间:2019-06-19

本文共 1129 字,大约阅读时间需要 3 分钟。

关键字:#pragma comment linker /subsystem:windows  /subsystem:console

转自:

 

操作系统装载应用程序后,做完初始化工作就转到程序的入口点执行。程序的默认入口点实际上是由连接程序设置的,不同的连接器选择的入口函数也不尽相同。在VC++下,连接器对控制台程序设置的入口函数是 mainCRTStartup,mainCRTStartup 再调用你自己编写的 main 函数;对图形用户界面(GUI)程序设置的入口函数是 WinMainCRTStartup,WinMainCRTStartup 调用你自己写的 WinMain 函数。而具体设置哪个入口点是由连接器的“/subsystem:”选项参数确定的,它告诉操作系统如何运行编译生成的.EXE文件。可以指定四种方式“CONSOLE|WINDOWS|NATIVE|POSIX”。

如果这个选项参数的值为“WINDOWS”,则表示该应用程序运行时不需要控制台,有关连接器参数选项的详细说明请参考 MSDN 库。

 

以下四种组合,可以实现console和windows模式的混合,可以达到不弹出DOS窗口的效果,也可以达到在Windows程序中向控制台输出printf信息了。

#pragma comment( linker, "/subsystem:windows /entry:WinMainCRTStartup" )

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

#pragma comment( linker, "/subsystem:console /entry:mainCRTStartup" )

#pragma comment( linker, "/subsystem:console /entry:WinMainCRTStartup" )

 

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR  lpCmdLine,int  nCmdShow)

{
     // ... ...
}
int main(void)
{
     // ... ...
}

----------------------------------

注:在我的Win7 + VS2010环境下,无法实现不弹出console那个黑框而直接蹦出MessageBox。

转载于:https://www.cnblogs.com/qinfengxiaoyue/archive/2012/05/27/2519706.html

你可能感兴趣的文章
转载 - linux面试题:删除一个目录下的所有文件,但保留一个指定文件
查看>>
spring定时器----JobDetailBean
查看>>
打印机无法连接
查看>>
我的友情链接
查看>>
JS 判断中英文字符长度
查看>>
我的友情链接
查看>>
网络回溯分析技术八大应用之运维评估 故障排查
查看>>
从原理图到pcb的更新
查看>>
Android----xml文件中的控件的id设置
查看>>
global用法详解
查看>>
XP下如何删除附件中的游戏组件
查看>>
政府信息化建设之——微门户和政务微信
查看>>
link href="&lt
查看>>
HttpClientUtil
查看>>
docker命令无法使用,关闭selinux 即可
查看>>
Quartz基本使用(六)
查看>>
环境搭建安卓开发频解说
查看>>
标准库类型--string,vector,bitset
查看>>
Python 4.1 类和实例
查看>>
vuex的state,mapState,...mapState对象展开符详解
查看>>