动态连接库与静态连接库

1 静态连接库的优势 编程

 (1) 代码装载速度快,执行速度略比动态连接库快; 编程语言

 (2) 只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题,可避免DLL地狱等问题。 ide

2 动态连接库的优势 函数

 (1) 更加节省内存并减小页面交换;测试

 (2) DLL文件与EXE文件独立,只要输出接口不变(即名称、参数、返回值类型和调用约定不变),更换DLL文件不会对EXE文件形成任何影响,于是极大地提升了可维护性和可扩展性;spa

 (3) 不一样编程语言编写的程序只要按照函数调用约定就能够调用同一个DLL函数;orm

 (4)适用于大规模的软件开发,使开发过程独立、耦合度小,便于不一样开发者和开发组织之间进行开发和测试。接口

3 不足之处内存

 (1) 使用静态连接生成的可执行文件体积较大,包含相同的公共代码,形成浪费;开发

 (2) 使用动态连接库的应用程序不是自完备的,它依赖的DLL模块也要存在,若是使用载入时动态连接,程序启动时发现DLL不存在,系统将终止程序并给出错误信息。而使用运行时动态连接,系统不会终止,但因为DLL中的导出函数不可用,程序会加载失败;速度比静态连接慢。当某个模块更新后,若是新模块与旧的模块不兼容,那么那些须要该模块才能运行的软件,通通撕掉。这在早期Windows中很常见。

还有一点区别:

静态库在程序编译时会被链接到目标代码中,程序运行时将再也不须要该静态库

动态库在程序编译时并不会被链接到目标代码中,而是在程序运行是才被载入,所以在程序运行时还须要动态库存在。


静态库是指编译连接时,把库文件的代码所有

加载到可执行文件中,所以生成的文件比较大,但在运行时也就再也不须要库文件了。其后

缀名通常为“.a” 动态库与之相反,在编译连接时并无把库文件的代码加载到可执行

文件中,而是在程序执行时由运行时连接文件加载库,这样能够节省系统的开销。

相关文章
相关标签/搜索