首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >/SUBSYSTEM参数的意义- msdn

/SUBSYSTEM参数的意义- msdn
EN

Stack Overflow用户
提问于 2013-01-16 15:57:06
回答 3查看 1.1K关注 0票数 1

根据链接http://msdn.microsoft.com/en-us/library/fcc1zstk(v=vs.100).aspx

32位应用程序应使用4.00(最低),64位应用程序应使用5.02(最低)

但是我想要理解这个参数的意义/意义,以及来自该链接的下面的陈述。

“子系统的选择会影响链接器将选择的入口点符号(或入口点函数)。”

假的

EN

回答 3

Stack Overflow用户

发布于 2013-01-16 16:16:58

简单地说:如果你正在编写一个控制台应用程序,你需要指定/SUBSYSTEM:CONSOLE;如果你正在编写一个不会自动打开控制台窗口的窗口应用程序,你需要/SUBSYSTEM:WINDOWS。其他子系统指定您的应用程序在内核模式下运行(但这不是简单的可能),直接与硬件交互或在Windows CE设备上运行。

很少需要指定版本。

链接器创建的可执行文件根据此选项简单地设置了一个标志,负责启动应用程序的Windows函数检查此标志以确定如何启动应用程序(附加了控制台窗口等)。

票数 4
EN

Stack Overflow用户

发布于 2013-01-16 16:03:59

在你的程序中你有main_tmainWinMain等等。这是你的程序开始的地方。然而,这并不是程序真正开始的入口点,它只是一个从链接到程序的运行时调用的函数。在运行时,通常有一个特殊的函数,它在调用main函数之前进行一些初始化,这是文档中提到的“入口点”。

子系统设置似乎告诉链接器根据其设置使用不同的“入口点”函数。

票数 0
EN

Stack Overflow用户

发布于 2013-01-17 06:40:33

子系统参数的主要意义在于确定将为哪个子系统构建可执行文件;它是控制台应用程序、Windows应用程序、POSIX应用程序、设备驱动程序等等。

根据文档,版本号指定可执行文件所需的最低操作系统(或子系统)版本。例如,如果您指定6.0 (Windows Vista),那么在理论上,Windows XP将拒绝尝试运行可执行文件。我不确定这是否真的是真的,我不认为以这种方式指定最低操作系统版本是常见的做法。

对入口点的影响描述得有点草率;更准确地说,子系统的选择会影响默认入口点。您可以使用/ENTRY参数覆盖此默认值。

/ENTRY下的文档所示,默认设置如下:

  • /SUBSYSTEM:CONSOLE:mainCRTStartup (或wmainCRTStartup)
  • /SUBSYSTEM:WINDOWS:WinMainCRTStartup (或wWinMainCRTStartup)
  • /DLL:_DllMainCRTStartup

它还表示:“如果未指定/DLL或/SUBSYSTEM选项,链接器将根据定义的是main还是WinMain来选择子系统和入口点。”

其他子系统没有默认入口点,您必须显式使用/ENTRY选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14353668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档