zoukankan      html  css  js  c++  java
  • lib和dll文件的初了解


    lib,dll这两样东西在许多编程书中都很少出现,但实际工程中,这两样东西的作用确实非常重要,我觉得c++程序员都有必要了解这两样东西。


    首先总共有 动态链接 和 静态链接 这两种链接方式

    |静态链接:

    静态链接使用静态链接库lib,且只在源代码编译时用到(编译期)。
    编译生成静态库时会生成一个.lib文件
    .lib里面装载了各种类,函数的实现。
    这种静态链接的lib实际上是多个obj文件的集合。

    |为什么需要静态链接?

    在实际工程中,往往各模块的规模庞大(一堆.h .cpp文件)
    而编译时,每个.cpp对应生成.obj文件,一个模块生成一堆obj文件,然后分不清哪些obj是属于哪部分模块,造成维护的不便性
    为了解决这问题,可以将每个主要模块先编译成一个.lib文件,再使用静态链接的方法,在编译期将各模块的.lib的文件链接起来。

    |动态链接:

    动态链接使用动态链接库dll,且只在程序启动时用到(运行期)
    编译生成动态链接库时会生成一个.dll文件和一个.lib文件

    .dll存放了各函数,.exe刚开始运行时就会动态链接上所需的.dll文件(运行期)

    .lib则一般是一些索引信息,记录了dll中函数的入口和位置(跟静态链接库的lib不同),不过仍然只在编译期用到(编译期)

    |为什么需要动态链接?

    由于.dll存放了各函数,.exe里无需再存放.dll已含有的函数,只需调用时存放相应的函数地址,这样可以将.exe的空间大小转移一部分给.dll。
    在大型软件的更新中,如果更新一个庞大的exe文件,负担想必是极大的。如果仅针对其中某几个.dll更新,则可以减少更新的大小。提高灵活性。
    缺点还是有的,在程序刚开始运行时,程序会动态链接n个.dll,这个操作需要花时间。
    (某些大型游戏,点开图标后,半天都不把程序弹出来,大概也有这个原因- -||)

  • 相关阅读:
    数据库设计:数据库设计步骤,er图,三大范式
    连接查询
    连接查询和分组查询
    Django项目的创建与配置
    WEB框架的原理总结
    RabbitMQ---消息队列
    Djang之基于角色的权限控制(RBAC)
    Django之基于RBAC权限控制生成动态菜单
    关于装饰器的一些小练习
    关于简单的python函数的一些小练习题
  • 原文地址:https://www.cnblogs.com/KillerAery/p/9097541.html
Copyright © 2011-2022 走看看