我几乎到处都是静态库的忠实粉丝.DLL为您提供的静态库无法做到的一件大事就是能够动态加载和卸载库功能.因此,如果您的应用程序将支持某种热交换插件,则需要使用动态库.否则你可能会使用静态库.
静态库打开了大量优化的大门,这些优化是动态库无法实现的,因为它们是在链接时执行的.在微软世界中,链接时间代码生成(LTCG)使您能够通过您的应用程序以及您的库(在gcc中称为链接时间优化[LTO])进行整个程序优化和死代码剥离.
另外,静态库往往会使您的程序更容易分发,因为您不必传递大量的库文件,并且如果您要对库进行版本化,则可以完全避免DLL-hell.