一  一段代码

#if defined(WIN32)
    #ifdef NDEBUG
        #pragma comment(linker, "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
    #else
        #pragma comment(linker, "/SUBSYSTEM:CONSOLE")
    #endif
#endif

二 代码解释

1  pragma comment

#pragma comment( comment-type [,"commentstring"] )

comment-type:compiler | exestr | lib | linker | user

2 linker options

(1)/SUBSYSTEM :通知操作系统如何运行 .exe 文件。

/SUBSYSTEM:{BOOT_APPLICATION|CONSOLE|EFI_APPLICATION|  
            EFI_BOOT_SERVICE_DRIVER|EFI_ROM|EFI_RUNTIME_DRIVER|NATIVE|  
            POSIX|WINDOWS)  
            [,major[.minor]]

其中:

CONSOLE
Win32 字符模式应用程序。 操作系统为各种控制台应用程序提供控制台。 如果为本机代码定义了 main 或 wmain,为托管代码定义了 int main(array<String>),或者完全使用 /clr:safe 构建应用程序,则CONSOLE是默认值。

WINDOWS
应用程序不需要控制台,原因很可能是它会创建自己的窗口来与用户进行交互。 如果为本机代码定义了 WinMain 或 wWinMain,或为托管代码定义了 WinMain(HISTANCE *, HINSTANCE *, char *, int) 或 wWinMain(HINSTANCE *, HINSTANCE *, wchar_t *, int),则 WINDOWS 是默认值。

在 Visual Studio 开发环境中设置此链接器选项:

1.打开项目的“属性页” 对话框。
2.选择链接器文件夹。
3.选择系统属性页。
4.修改SubSystem属性。

(2)/ENTRY  : 设置起始地址。

/ENTRY:function

function取值:

功能名称 默认值为
mainCRTStartup (或wmainCRTStartup) 使用 /subsystem: console; 的应用程序调用main(或wmain)An application that uses /SUBSYSTEM:CONSOLE; calls main (or wmain)
WinMainCRTStartup (或wWinMainCRTStartup) 使用 /SUBSYSTEM 的应用程序:WINDOWS; 调用WinMain(或wWinMain),必须对其进行定义以使用 __stdcallAn application that uses /SUBSYSTEM:WINDOWS; calls WinMain (or wWinMain), which must be defined to use __stdcall
_DllMainCRTStartup DLL;调用DllMain如果存在,其必须进行定义以使用 __stdcall

在 Visual Studio 开发环境中设置此链接器选项
1.打开项目的“属性页” 对话框。
2.单击链接器文件夹。
3.单击高级属性页。
4.修改入口点属性。

三 参考

comment (C/C++)

linker options

Linker options相关推荐

  1. 向大家推荐一个C/C++通用Makefile

    在使用 Makefile 之前,只需对它进行一些简单的设置即可:而且一经设置,即使以后对源程序文件有所增减一般也不再需要改动 Makefile.因此,即便是一个没有学习过 Makefile 书写规则的 ...

  2. CodeBlocks集成Objective-C开发 Windows下学习Objective-C

    CodeBlocks集成Objective-C开发 1.    首先安装Objective-C编译器 GNUstep Windows Installer提供了Windows平台下的Objective- ...

  3. bazel 链接第三方动态库_Linux 动态库与静态库制作及使用详解

    Linux 应用开发通常要考虑三个问题,即:1)在 Linux 应用程序开发过程中遇到过标准库链接在不同 Linux 版本下不兼容的问题: 2)在 Linux 静态库的制作过程中发现有别于 Windo ...

  4. codeblocks常用配置

    隐藏项目管理的层级目录 右键-项目--Project tree--dispay floders as on disk--hide floder name 添加编译参数: Settings ==> ...

  5. opencv undefined reference to symbol '_ZN2c...异常

    异常: /usr/bin/ld: ./src/flann.o: undefined reference to symbol '_ZN2cv5flann12SearchParamsC1Eifb' 解决: ...

  6. GCC中同时使用动态和静态库链接的编译

    2019独角兽企业重金招聘Python工程师标准>>> 如何同时同时使用动态和静态库链接,在GCC指令参数中具体参数如下:     -Wl,-Bstatic -L/usr/local ...

  7. CMake结合Visual Studio中开发Qt应用程序注意事项

    Qt工程管理 个人比较偏爱于使用CMake来管理C++工程,因为只要编写一个CMakeLists.txt文件,就可以在Windows和Mac上生成各自的IDE工程.在Windows上, CMake自然 ...

  8. MakeFile 文件的作用

    makefile文件保存了编译器和连接器的参数选项,还表述了所有源文件之间的关系(源代码文件需要的特定的包含文件,可执行文件要求包含的目标文件模块及库等).创建程序(make程序)首先读取makefi ...

  9. VC6.0环境设置说明

    VC环境设置说明 http://blog.sina.com.cn/s/blog_4bb59dc40100fcet.html 所谓:"工欲善其事,必先利其器".如果我们精于VC开发环 ...

最新文章

  1. 关于微软Silverlight,你应该知道的10件事
  2. Python中*args和**kwargs
  3. Learning Perl 4
  4. Linux网络编程 之 UDP编程(六)
  5. 【POJ - 2301 】Beat the Spread! (简单数学)
  6. 吴恩达深度学习 ——深层神经网络(选择题)
  7. Android p Sign Tool
  8. 解析json数组——TypeToken
  9. Webrtc demo system
  10. js 设置div超出宽度隐藏_【CSS/JS】如何实现单行/多行文本溢出的省略(...)--绕过坑道的正确姿势...
  11. Mac在线网页版打字推荐
  12. 机器学习与神经网络绪论
  13. android viewholder模式,为什么在ViewHolder模式中ViewHolder类应该是静态的?
  14. VvvebJs可视化前端设计开发工具
  15. 衡是计算机科学与技术学院,郭华平
  16. 用python完成商品的名称、价格表显示,用户选择商品并统计结果
  17. unity静止人物素材制作动作,导入unity行走、跑步动画,并用Animator Controller加脚本进行控制
  18. Qt获取IP地址、MAC地址等网卡信息,区分本地网卡、无线网卡和虚拟网卡
  19. 用PAM自定义身份验证
  20. 【信息安全课程设计】字典破解密码

热门文章

  1. Elasticsearch中flattened字段类型
  2. CSS:内边距padding的设置,值的个数表达的意思是什么?
  3. 利用itext操作pdf从数据库导出大量数据--添加水印(四)
  4. 中兴 F620 光猫电信超级密码破解
  5. TypeScript Essential Notes 5 - Classes
  6. 阅读作业二之The Cathedral and the Bazaar和A Generation Lost in the Bazaar——洪虹
  7. 养猫的男人--驳「25岁后应知道的66件事」中的第45件
  8. 电能表中的四象限解释
  9. js获取当前农历年月 原生js实现公历转农历
  10. 陈福云北京个人演唱会精彩上演 用歌声传递家乡美