Letton Asked:2020-09-26 01:37:37 +0800 CST2020-09-26 01:37:37 +0800 CST 2020-09-26 01:37:37 +0800 CST 程序入口点 772 WinMain/wWinMain为什么控制台不在入口点启动。在入口点main- 它开始了。这个怎么运作? 如果默认WinMain/wWinMain是main. 如何在不使用windows.hmain头文件运行控制台的情况下使用入口点? 我还想问一下你在哪里可以找到关于这个的结构化信息(阅读它,它是如何工作的)。 c++ 2 个回答 Voted Best Answer MSDN.WhiteKnight 2020-01-11T15:56:30+08:002020-01-11T15:56:30+08:00 如果默认为main,编译器如何理解WinMain/wWinMain是入口点 该标准仅规定编译器必须支持使用带有原型的入口点int main(int argc, char **argv)。该标准不禁止支持任何其他入口点。在 Visual C++ 的情况下,入口点由/SUBSYSTEM和/ENTRY 链接器选项确定。当 /SUBSYSTEM 选项设置为“WINDOWS”并且未定义 /ENTRY 选项时,入口点是 WinMain 函数。 如何在不运行控制台的情况下使用主入口点 通过设置链接器选项/ENTRY:"mainCRTStartup" /SUBSYSTEM:WINDOWS。在项目属性对话框中,这些选项分别位于“链接器 - 高级 - 入口点”和“链接器 - 系统 - 子系统”中。 选择入口点的原则的详细描述可以在这里找到: win32应用程序中的入口点 Mikhailo 2020-01-13T00:05:03+08:002020-01-13T00:05:03+08:00 理解的不是编译器,而是链接器。当它链接到特定的文件格式时——控制台、窗口应用程序或其他任何东西——它会将一些目标文件与初始化各种事物的启动代码链接起来,例如解析 kormand 行和所有这些,然后在准备好环境执行之后, 调用相同的“main”函数。 对于不同的项目,它可能有不同的名称。 WinMain——这只是一个约定,这个名字没有什么神秘和神圣的。
该标准仅规定编译器必须支持使用带有原型的入口点
int main(int argc, char **argv)
。该标准不禁止支持任何其他入口点。在 Visual C++ 的情况下,入口点由/SUBSYSTEM和/ENTRY 链接器选项确定。当 /SUBSYSTEM 选项设置为“WINDOWS”并且未定义 /ENTRY 选项时,入口点是 WinMain 函数。通过设置链接器选项
/ENTRY:"mainCRTStartup" /SUBSYSTEM:WINDOWS
。在项目属性对话框中,这些选项分别位于“链接器 - 高级 - 入口点”和“链接器 - 系统 - 子系统”中。选择入口点的原则的详细描述可以在这里找到: win32应用程序中的入口点
理解的不是编译器,而是链接器。当它链接到特定的文件格式时——控制台、窗口应用程序或其他任何东西——它会将一些目标文件与初始化各种事物的启动代码链接起来,例如解析 kormand 行和所有这些,然后在准备好环境执行之后, 调用相同的“main”函数。
对于不同的项目,它可能有不同的名称。
WinMain
——这只是一个约定,这个名字没有什么神秘和神圣的。