What is static and dynamic libraries
他们有什么相同点吗?
都是库文件。对于调用库文件的使用者来说,不管是静态库还是动态库,调用的方式都是一样的,没什么区别。
Differences between static and dynamic libraries
动态库和静态库的区别在于编译阶段的不同,
静态库编译的时候,会把导入的第三方库文件一起打包成一个静态库。
动态库编译的时候,只把导入的第三方库文件的链接记录下来,生成一个动态库,调用者请求动态库里面的函数的时候,如果需要调用第三方库文件,就是根据打包时记录的动态库链接信息去系统里面找这个第三方库文件,如果能找到,就可以顺利执行,如果找不到,就执行失败。
做一个类似的比喻:
静态库编译的时候类似值传递(Pass by Value);
动态库编译的时候类似引用传递(Pass by Reference);
How do the two techniques compare in terms of application?
不管是提供什么库文件给使用者,都是希望使用者能顺利调用的,
如果你能确认使用者的设备里面一定有这些第三方库文件,可以打包成动态库,打包成动态库还能节省使用者的资源。
如果不能确认使用者的设备里面一定有这些第三方库文件,那么还是保险点,打包成一个静态库给他。
Reference
C++静态库与动态库
https://www.cnblogs.com/skynet/p/3372855.html
Differences between static and dynamic libraries
https://www.linkedin.com/pulse/differences-between-static-dynamic-libraries-juan-david-tuta-botero
引用传递(pass by reference):
描述如何将实参传递给引用类型的形参。引用形参和其他形式的引用工作机理相似,形参被绑定到相应的实参上。
值传递(pass by value):
描述如何将实参传递给非引用类型的形参。非引用类型的形参实际上是相应实参值的一个副本。