有人能解释这两个声明之间的区别在Visual Studio 2008中的链接器的属性(请尽可能简单,我是C++世界的新手),提前感谢编辑:如果可能的话,你能不能请给予我两个小程序显示一下效果
pod7payv1#
/SUBSYSTEM:CONSOLE)用于基于控制台的应用程序。您应该在代码中定义main函数。/SUBSYSTEM:WINDOWS)用于GUI应用程序。您应该定义WinMain函数。
/SUBSYSTEM:CONSOLE)
main
/SUBSYSTEM:WINDOWS)
WinMain
kxxlusnw2#
控制台:控制台窗口显示. WINDOWS -程序启动没有控制台窗口.已编辑,查看另一个答案。请注意,/SUBSYSTEM标志不影响程序入口点。程序入口点由/ENTRY链接器选项定义。通常/SUBSYSTEM:CONSOLE具有“main”入口点,而/SUBSYSTEM:WINDOWS具有“WinMain”入口点。但也可以使用WinMain入口点和Console窗口创建GUI应用程序。
xtfmy6hx3#
见here。VS 2008为你自动化了一些导致混乱的事情。
CONSOLEWin32字符模式应用程序。操作系统为控制台应用程序提供控制台。如果为本机代码定义了main或wmain,为托管代码定义了int main(array ^),或者您完全使用/clr:safe构建应用程序,则CONSOLE为默认值。WINDOWS应用程序不需要控制台,可能是因为它会创建自己的窗口来与用户交互。如果为本机代码定义了WinMain或wWinMain,或者为托管代码定义了WinMain(HISTANCE *,HISTONCE *,char *,int)或wWinMain(HISTONCE *,HISTONCE *,wchar_t *,int),则WINDOWS是默认值。
axzmvihb4#
/SUBSYSTEM:CONSOLE会导致一个带有控制台的进程,而/SUBSYSTEM:WINDOWS则不会。
c9x0cxw05#
我在2023年的解决方案,使用SDL 2和VSCode,使用mingw32编译:对于生产构建,我使用标志-mwindows,它可以防止std::cout和printf在任何地方打印。为了调试,我将标志-mwindows更改为-Wl,-subsystem,console,以允许在控制台窗口中打印std::cout和printf。
-mwindows
std::cout
printf
-Wl,-subsystem,console
5条答案
按热度按时间pod7payv1#
/SUBSYSTEM:CONSOLE)
用于基于控制台的应用程序。您应该在代码中定义main
函数。/SUBSYSTEM:WINDOWS)
用于GUI应用程序。您应该定义WinMain
函数。kxxlusnw2#
控制台:控制台窗口显示. WINDOWS -程序启动没有控制台窗口.
已编辑,查看另一个答案。请注意,/SUBSYSTEM标志不影响程序入口点。程序入口点由/ENTRY链接器选项定义。通常/SUBSYSTEM:CONSOLE具有“main”入口点,而/SUBSYSTEM:WINDOWS具有“WinMain”入口点。但也可以使用WinMain入口点和Console窗口创建GUI应用程序。
xtfmy6hx3#
见here。VS 2008为你自动化了一些导致混乱的事情。
CONSOLEWin32字符模式应用程序。操作系统为控制台应用程序提供控制台。如果为本机代码定义了main或wmain,为托管代码定义了int main(array ^),或者您完全使用/clr:safe构建应用程序,则CONSOLE为默认值。
WINDOWS应用程序不需要控制台,可能是因为它会创建自己的窗口来与用户交互。如果为本机代码定义了WinMain或wWinMain,或者为托管代码定义了WinMain(HISTANCE *,HISTONCE *,char *,int)或wWinMain(HISTONCE *,HISTONCE *,wchar_t *,int),则WINDOWS是默认值。
axzmvihb4#
/SUBSYSTEM:CONSOLE会导致一个带有控制台的进程,而/SUBSYSTEM:WINDOWS则不会。
c9x0cxw05#
我在2023年的解决方案,使用SDL 2和VSCode,使用mingw32编译:
对于生产构建,我使用标志
-mwindows
,它可以防止std::cout
和printf
在任何地方打印。为了调试,我将标志
-mwindows
更改为-Wl,-subsystem,console
,以允许在控制台窗口中打印std::cout
和printf
。