动态链接库几个要点

动态链接库几个要点

1.      动态链接库不能直接运行,也不能接受消息, windows API 中所有的函数都包含在
     DLL
 
(1)    Kernel32.dll 管理内存,进程,线程的各个函数。
(2)    User32.dll 用于执行用户界面任务,如果窗口创建过程和消息传递的各个函数。
(3)    GDI32.dll 用于画图和显示文本。
2.      静态库
(1)    函数和数据被编译成一个二进制文件(通常扩展名为 LIB ),连接器从库中复制
           这些函数并把他们和应用程序的其他模块组合起来创建最终的可执行文件。
(2)    发布软件产品时用 EXE 即可,不用发布 LIB
3.      动态库
(1)    动态链接库往往提供两个文件,一个是引入库( .LIB )和 DLL 。引入库包含 DLL
            导出函数和变量的符号名。 DLL 包含实际的函数和数据。在编译可执行文件
    
             时,只需要链接引入库, DLL 中的函数代码和数据并不复制到可执行文件中,
           在运行时,在去加载 DLL ,访问 DLL 的导出函数。
(2)    发布 EXE 时带 DLL
(3)    引入库与静态库都为 LIB
4.      DLL 的好处
(1)    多种编程语言来编写
(2)    增强产品的功能
(3)    提供二次开发平台
(4)    简化项目管理
5)    节省磁盘空间和内存
(6)    有助于资源共享
(7)    有助于实现应用程序的本地化
5.   DLL 和可执行文件程序相似,不同的 DLL 包含导出表, DLL 导出表可以用 Dumpbin
来查看。如: Dumpbin -export X .dll 来查看导出函数。
(I) 编写导出函数可以使用下面两种方式
(1)    在程序中 m.def 文件的 Exports 部分添加导出函数的名称
(2)    在具体的开发环境中,使用 _declspec dllexport )关键字标识,如 _declspec
         ( dllexport int add int a int b { return a+b;}
 
  (II) 查看应用程序所加载的动态链接库:
目录 / dumpbine -imports (X).exe
   (III) 加载导出函数的两种方法
(1)         extern int add int a int b
(2)         _declspec(dllimport) int add(int a,int b)
其中( 2 )编译生成运行效率更高的代码
 6
动态调用
(1)    LoadLibrary 或则 MFC AfxLoadLibrary 动态的将自己所做的动态链接库调进来,
           动态链接库的名称即以上两个函数的参数。应用 GetProcAddress ()获得想导
          入的函数。
(2)    FreeLibrary 进行释放
静态调用
(1)    需要将 LIB 文件加入应用程序
(2)    DLL 改变后,应重新编译,并且所有的 DLL 在应用程序加载时,被加载到内存
           中,但应用程序调用的 DLL 比较多时,装入过程十分慢
 
          动态调用是编制大型应用程序的重要方法。  
 
 
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值