背景
- 最近学learnOpenGL-你好窗口,创建了一个空项目,里面有main函数做入口。
- 文章的运行效果最后是没有显示vs控制台的,但是我却有,强迫症一下就上来。
- 突然联想到之前试过vs里设置什么,然后就显示出了控制台。那么反过来应该是可以设置什么,就不显示控制台。
问题
vs如何设置可以显示控制台?
链接器-系统-子系统-选【控制台】
?
vs如何设置不显示控制台?
链接器-系统-子系统-【窗口】?
?链接器-高级-入口点填入【mainCRTStartup】
为什么要写入口?为什么入口是mainCRTStartup?
因为编译会报错。
链接器如果没有设置子系统,就会根据代码定义的main或者WinMain函数选择子系统和入口点。默认情况下(如上图)控制台的入口点是mainCRTStartup,会调用main函数。
当我们设置子系统为窗口,入口点是WinMainCRTStartup,会调用WinMain函数,由于我在项目里写了main函数,没有WinMain函数啊,WinMainCRTStartup想调用WinMain找不到就报错了。
设置入口为mainCRTStartup就是为了调用main函数,这样就达到了为了不显示控制台,子系统是窗口但不要走默认入口点,而去调用main函数。
效果
显示控制台:
?不显示控制台:
?
参考
?/ENTRY (Entry-Point Symbol) | Microsoft Docs
main 和 mainCRTStartup 有什么区别?
去掉console黑窗口的方法(qt和vs)_编爱程-CSDN博客
|