为什么静态库包含主函数?

时间:2016-11-09 19:55:03

标签: c++ static-libraries main

我遇到了一个奇怪的静态库,其中包含 main() 函数(C ++)。
我只是想知道它的目的是什么。

main()如何执行?

2 个答案:

答案 0 :(得分:8)

从链接器的角度来看,main函数的位置并不重要 - 它可以位于静态库中以及独立目标文件中,链接器也可以不在乎。它从目标文件生成可执行文件,无论它们来自何处,并且在最终的可执行文件中,库/非库文件符号之间的所有区别都将丢失。

至于目的,我可以想象某种专门的应用程序框架可以在库中具有main,您可以以定义的函数的形式提供回调。

答案 1 :(得分:5)

  

我只是想知道它的目的是什么。

这是一种常用的单元测试或图形/游戏引擎框架技术,用于定义可执行程序的bokeh入口点,并绑定某些工厂模式模板中的自定义类定义。

  

main()如何执行?

根据定义,它是任何c ++程序的主要入口点,因此执行程序由程序启动链接器脚本触发。

使用这些东西意味着您在可执行项目中编写客户端类,将它们与框架绑定,并省略以定义main()函数。