根据链接http://msdn.microsoft.com/en-us/library/fcc1zstk(v=vs.100).aspx
32位应用程序应使用4.00(最低),64位应用程序应使用5.02(最低)
但是我想要理解这个参数的意义/意义,以及来自该链接的下面的陈述。
“子系统的选择会影响链接器将选择的入口点符号(或入口点函数)。”
假的
发布于 2013-01-16 16:16:58
简单地说:如果你正在编写一个控制台应用程序,你需要指定/SUBSYSTEM:CONSOLE;如果你正在编写一个不会自动打开控制台窗口的窗口应用程序,你需要/SUBSYSTEM:WINDOWS。其他子系统指定您的应用程序在内核模式下运行(但这不是简单的可能),直接与硬件交互或在Windows CE设备上运行。
很少需要指定版本。
链接器创建的可执行文件根据此选项简单地设置了一个标志,负责启动应用程序的Windows函数检查此标志以确定如何启动应用程序(附加了控制台窗口等)。
发布于 2013-01-16 16:03:59
在你的程序中你有main,_tmain和WinMain等等。这是你的程序开始的地方。然而,这并不是程序真正开始的入口点,它只是一个从链接到程序的运行时调用的函数。在运行时,通常有一个特殊的函数,它在调用main函数之前进行一些初始化,这是文档中提到的“入口点”。
子系统设置似乎告诉链接器根据其设置使用不同的“入口点”函数。
发布于 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选项。
https://stackoverflow.com/questions/14353668
复制相似问题