• 去掉 CONSOLE 窗口(转)


    建立一个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

    但是我们也可以通过手动改动的方式使他们不匹配


    例如我们可以这样改动

    #include <windows.h>

    #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窗口就会隐藏!

    转自:http://gchenweb.blog.163.com/blog/static/30639258200981632442664/

  • 相关阅读:
    测试Remoting服务端和客户端的双向通信
    对T4模板研究针对SQL SERVER的EF代码生成
    菜鸟级WinForm分页控件
    [小技术应用]框架下动态调用用户控件的模态弹出窗体
    根据数据库表动态添加菜单及打开窗体
    Windows Mobile 5.0下蓝牙移动打印测试
    Window Mobile/CE的PC端安装测试
    基于Dev控件,在WinForm下动态配置界面
    TortoiseSVN使用简介
    SQL的一些经典算法
  • 原文地址:https://www.cnblogs.com/ydxt/p/3852790.html
Copyright © 2020-2023  润新知