2011-09-06 171 views

回答

8

/SUBSYSTEM:CONSOLE)适用于基于控制台的应用程序。您应该在代码中定义main函数。

/SUBSYSTEM:WINDOWS)用于GUI应用程序。您应该定义WinMain函数。

+7

SUBSYSTEM:WINDOWS不一定适用于GUI应用程序。仅用于没有控制台的应用程序。思考服务器应用程序,运行无头的服务。 –

+2

如果从MSVC 2013命令行定位Windows XP,则可能需要/SUBSYSTEM:WINDOWS.5.1(或:CONSOLE,5.1) –

2

/子系统:CONSOLE导致进程与控制台和/子系统:WINDOWS不不。

6

CONSOLE:显示控制台窗口。 WINDOWS - 程序启动时没有控制台窗口。

编辑,看另一个答案。请注意,/ SUBSYSTEM标志不会影响程序入口点。程序入口点由/ ENTRY链接器选项定义。通常/ SUBSYSTEM:CONSOLE具有“主”入口点,并且/ SUBSYSTEM:WINDOWS具有“WinMain”入口点。但是,例如,可以使用WinMain入口点和控制台窗口创建GUI应用程序。

3

请参阅here。 VS2008为你自动化了一些导致混淆的事情。

CONSOLE Win32字符模式应用程序。操作系统 为控制台应用程序提供了一个控制台。如果main或wmain是为本地代码定义的 ,则int main(array ^)定义为 托管代码,或者您完全通过使用 /clr来创建应用程序:安全,CONSOLE是缺省值。

WINDOWS应用程序不需要控制台,可能是因为它创建了自己的窗口来与用户进行交互。如果WinMain中 或wWinMain为本地代码,或者WinMain中(HISTANCE *, HINSTANCE *,字符*,INT)或wWinMain定义(HINSTANCE *,HINSTANCE *, wchar_t的*,INT)被托管代码定义,WINDOWS是默认值。