我遇到了一个奇怪的静态库,它包含一个 main()
函数(c++)。
我只是想知道它的目的是什么。
main()
是如何执行的?
从链接器的角度来看,main
函数在哪里并不重要-它可以在静态库中以及在独立的目标文件中,链接器不能关心。它从目标文件中生成可执行文件,无论它们来自何处,并且在最终的可执行文件中,库/非库符号之间的所有区别都消失了。
至于目的,我可以想象某种特殊的应用程序框架可以在库中使用main,并以定义函数的形式提供对它的回调。
我只是想知道这是什么目的。
这是单元测试或图形/游戏引擎框架的常用技术,用于定义可执行程序的main()
入口点,并从某些工厂模式模板绑定自定义类定义。
main()
是如何执行的?
根据定义,它是任何c++程序的主要入口点,因此执行是由程序启动链接器脚本触发的。
使用这样的东西意味着你在可执行项目中编写客户端类,将它们与框架绑定,并省略定义main()
函数。