Function 主程序

Function 主程序,function,compiler-construction,mingw,startup,main,Function,Compiler Construction,Mingw,Startup,Main,在C语言中没有主程序。当然,C程序员从int main(int argc char*argv[])开始,但这只起作用,因为有一个例程告诉编译器/IDE首先运行名为main的函数 不过,我似乎在MinGW找不到这种惯例。它的定义是什么?我只是搜索,因为我想改变它(只是作为一个测试)和玩它一点。有人能将我链接到MinGW文件夹中的正确文件吗?链接器将查找几个符号中的一个匹配项,以在链接PE文件时用作入口点: entry point subsystem -----------

在C语言中没有主程序。当然,C程序员从int main(int argc char*argv[])开始,但这只起作用,因为有一个例程告诉编译器/IDE首先运行名为main的函数


不过,我似乎在MinGW找不到这种惯例。它的定义是什么?我只是搜索,因为我想改变它(只是作为一个测试)和玩它一点。有人能将我链接到MinGW文件夹中的正确文件吗?

链接器将查找几个符号中的一个匹配项,以在链接PE文件时用作入口点:

entry point              subsystem
---------------------   --------------

NtProcessStartup           native
WinMainCRTStartup          Windows GUI
mainCRTStartup             Windows CUI (console)
__PosixProcessStartup      POSIX CUI
WinMainCRTStartup          WinCE GUI
mainCRTStartup             Xbox
mainCRTStartup             other

DllMainCRTStartup@12 (or possibly DllMainCRTStartup) for DLLs
MinGW将有一个自动链接的对象文件,该文件具有实际的PE入口点。-通过使用gcc的
-v
选项,您可以看到正在自动链接的对象文件

在使用MinGW 4.6.1构建控制台子系统“hello world”程序的快速测试中,包含入口点的目标文件是
crt2.o
,它有一个符号
mainCRTStartup
,链接器将其作为入口点

包含入口点代码的源文件是
crtexe.c
(或
crtdll.c


您可以使用链接器的
--entry
选项覆盖入口点(
Wl,--entry=which
,当在gcc命令行上使用时)。

谢谢!我会和gcc玩一会儿。