动态库(Dynamic Library)是一种 包含可由多个程序同时使用的代码和数据的文件。这些文件在程序运行时被动态加载和链接,而不是在程序编译时直接嵌入。动态库的主要优势在于它们实现了代码的模块化和资源共享,从而提高了程序的灵活性和运行效率。
在不同的操作系统中,动态库有不同的文件扩展名:
在Windows上,动态库通常被称为DLL(Dynamic Link Library)。
在Linux和macOS上,动态库通常被称为共享对象(.so文件)。
动态库的使用方式主要有两种:
静态调用 (也称为隐式链接):在程序编译时,将动态库的代码直接链接到可执行文件中。这样生成的可执行文件包含了动态库的所有代码,因此可以独立运行,但会导致可执行文件变大。动态调用
(也称为显式链接):在程序运行时,动态库的代码不会被嵌入到可执行文件中,而是在程序运行时根据需要动态加载。这种方式生成的可执行文件较小,但需要动态库文件在运行时可用。
此外,还有一种与动态调用相关的特性叫做 延迟加载,即在程序运行时按需加载动态库的特定部分,而不是一次性加载所有内容。
动态库的主要优点包括:
代码复用: 多个程序可以共享同一动态库的代码,减少重复编写相同功能的开销。 维护性
资源节约:动态库可以实现数据和资源的共享,减少内存占用。
灵活性:动态库可以在运行时动态加载和卸载,使程序更加灵活。
总的来说,动态库是一种强大的编程技术,它允许程序在运行时动态地加载和使用共享代码和数据,从而提高程序的性能和可维护性。