“无法解析的外部符号_main...”
无论控制台应用程序还是windows应用程序都出错,在加了main()后就成功了.我想知道vs编辑c时程序里必须要main吗...
无论控制台应用程序还是windows应用程序都出错,在加了main()后就成功了.我想知道vs编辑c 时程序里必须要main吗
展开
1个回答
展开全部
_main不是真正的入口
控制台程序的默认入口是_mainCRTStartup, 它将调用_main
windows程序的默认入口是_WinMainCRTStartup, 它将调用_WinMain
这两个真正的入口都在C运行时库中,用来初始化C运行时库,调用全局对象的构造函数等
当然你可以更改默认的入口
在VS中配置属性->链接器->高级->入口点 中可设置入口点函数,也可用命令行选项/ENTRY指定入口点,来替换_mainCRTStartup。但是此时C运行时库没有初始化,调用一些CRT函数(如malloc)会出现问题
NT的驱动程序就是这样做的,它们的入口是DriverEntry
你若想详细了解CRT的初始化过程,可以参考CRT源代码:
vs安装目录\VC\crt\src\crt0.c
控制台程序的默认入口是_mainCRTStartup, 它将调用_main
windows程序的默认入口是_WinMainCRTStartup, 它将调用_WinMain
这两个真正的入口都在C运行时库中,用来初始化C运行时库,调用全局对象的构造函数等
当然你可以更改默认的入口
在VS中配置属性->链接器->高级->入口点 中可设置入口点函数,也可用命令行选项/ENTRY指定入口点,来替换_mainCRTStartup。但是此时C运行时库没有初始化,调用一些CRT函数(如malloc)会出现问题
NT的驱动程序就是这样做的,它们的入口是DriverEntry
你若想详细了解CRT的初始化过程,可以参考CRT源代码:
vs安装目录\VC\crt\src\crt0.c
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询