有人可以请解释Visual Studio 2008中链接器属性中的这两个声明之间的区别(请尽可能简单,我是新的在C++)感谢advace世界控制台(/ SUBSYSTEM:CONSOLE)和Windows(/ SUBSYSTEM:WINDOWS)之间的区别
编辑:如果可能的话你能不能给我请两个小程序,显示效果
有人可以请解释Visual Studio 2008中链接器属性中的这两个声明之间的区别(请尽可能简单,我是新的在C++)感谢advace世界控制台(/ SUBSYSTEM:CONSOLE)和Windows(/ SUBSYSTEM:WINDOWS)之间的区别
编辑:如果可能的话你能不能给我请两个小程序,显示效果
/SUBSYSTEM:CONSOLE)
适用于基于控制台的应用程序。您应该在代码中定义main
函数。
/SUBSYSTEM:WINDOWS)
用于GUI应用程序。您应该定义WinMain
函数。
/子系统:CONSOLE导致进程与控制台和/子系统:WINDOWS不不。
CONSOLE:显示控制台窗口。 WINDOWS - 程序启动时没有控制台窗口。
编辑,看另一个答案。请注意,/ SUBSYSTEM标志不会影响程序入口点。程序入口点由/ ENTRY链接器选项定义。通常/ SUBSYSTEM:CONSOLE具有“主”入口点,并且/ SUBSYSTEM:WINDOWS具有“WinMain”入口点。但是,例如,可以使用WinMain入口点和控制台窗口创建GUI应用程序。
请参阅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是默认值。
SUBSYSTEM:WINDOWS不一定适用于GUI应用程序。仅用于没有控制台的应用程序。思考服务器应用程序,运行无头的服务。 –
如果从MSVC 2013命令行定位Windows XP,则可能需要/SUBSYSTEM:WINDOWS.5.1(或:CONSOLE,5.1) –