Linker options
一 一段代码
#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 ),必须对其进行定义以使用 __stdcall An 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相关推荐
- 向大家推荐一个C/C++通用Makefile
在使用 Makefile 之前,只需对它进行一些简单的设置即可:而且一经设置,即使以后对源程序文件有所增减一般也不再需要改动 Makefile.因此,即便是一个没有学习过 Makefile 书写规则的 ...
- CodeBlocks集成Objective-C开发 Windows下学习Objective-C
CodeBlocks集成Objective-C开发 1. 首先安装Objective-C编译器 GNUstep Windows Installer提供了Windows平台下的Objective- ...
- bazel 链接第三方动态库_Linux 动态库与静态库制作及使用详解
Linux 应用开发通常要考虑三个问题,即:1)在 Linux 应用程序开发过程中遇到过标准库链接在不同 Linux 版本下不兼容的问题: 2)在 Linux 静态库的制作过程中发现有别于 Windo ...
- codeblocks常用配置
隐藏项目管理的层级目录 右键-项目--Project tree--dispay floders as on disk--hide floder name 添加编译参数: Settings ==> ...
- opencv undefined reference to symbol '_ZN2c...异常
异常: /usr/bin/ld: ./src/flann.o: undefined reference to symbol '_ZN2cv5flann12SearchParamsC1Eifb' 解决: ...
- GCC中同时使用动态和静态库链接的编译
2019独角兽企业重金招聘Python工程师标准>>> 如何同时同时使用动态和静态库链接,在GCC指令参数中具体参数如下: -Wl,-Bstatic -L/usr/local ...
- CMake结合Visual Studio中开发Qt应用程序注意事项
Qt工程管理 个人比较偏爱于使用CMake来管理C++工程,因为只要编写一个CMakeLists.txt文件,就可以在Windows和Mac上生成各自的IDE工程.在Windows上, CMake自然 ...
- MakeFile 文件的作用
makefile文件保存了编译器和连接器的参数选项,还表述了所有源文件之间的关系(源代码文件需要的特定的包含文件,可执行文件要求包含的目标文件模块及库等).创建程序(make程序)首先读取makefi ...
- VC6.0环境设置说明
VC环境设置说明 http://blog.sina.com.cn/s/blog_4bb59dc40100fcet.html 所谓:"工欲善其事,必先利其器".如果我们精于VC开发环 ...
最新文章
- 关于微软Silverlight,你应该知道的10件事
- Python中*args和**kwargs
- Learning Perl 4
- Linux网络编程 之 UDP编程(六)
- 【POJ - 2301 】Beat the Spread! (简单数学)
- 吴恩达深度学习 ——深层神经网络(选择题)
- Android p Sign Tool
- 解析json数组——TypeToken
- Webrtc demo system
- js 设置div超出宽度隐藏_【CSS/JS】如何实现单行/多行文本溢出的省略(...)--绕过坑道的正确姿势...
- Mac在线网页版打字推荐
- 机器学习与神经网络绪论
- android viewholder模式,为什么在ViewHolder模式中ViewHolder类应该是静态的?
- VvvebJs可视化前端设计开发工具
- 衡是计算机科学与技术学院,郭华平
- 用python完成商品的名称、价格表显示,用户选择商品并统计结果
- unity静止人物素材制作动作,导入unity行走、跑步动画,并用Animator Controller加脚本进行控制
- Qt获取IP地址、MAC地址等网卡信息,区分本地网卡、无线网卡和虚拟网卡
- 用PAM自定义身份验证
- 【信息安全课程设计】字典破解密码
热门文章
- Elasticsearch中flattened字段类型
- CSS:内边距padding的设置,值的个数表达的意思是什么?
- 利用itext操作pdf从数据库导出大量数据--添加水印(四)
- 中兴 F620 光猫电信超级密码破解
- TypeScript Essential Notes 5 - Classes
- 阅读作业二之The Cathedral and the Bazaar和A Generation Lost in the Bazaar——洪虹
- 养猫的男人--驳「25岁后应知道的66件事」中的第45件
- 电能表中的四象限解释
- js获取当前农历年月 原生js实现公历转农历
- 陈福云北京个人演唱会精彩上演 用歌声传递家乡美