DLL隐式与显式调用浅析

from http://blog.sina.com.cn/s/blog_890a68e101010k1f.html

调用原理:


将DLL文件映射到用户进程地址空间,然后就可进行函数调用,调用方法与进程内部一般函数的调用方法相同。Windodws提供两种将DLL映射到进程空间的方法,即隐式调用与显式调用。

隐式调用:

即通过LIB和头文件。该方法需要DLL工程经编译后产生的LIB文件,此文件包含DLL允许应用程序调用的所有函数列表。LINKER检测应用程序调用了LIB文件中的某个函数时,就会在应用程序EXE文件中加入相关信息。该应用程序运行时,系统会查看这个文件的DLL信息,后将DLL文件映射到地址空间。因为LIB文件并没有包含函数的具体实现,因此LIB文件相较于DLL文件和STATIC-LIB文件(静态链接库)会比较小

系统寻找DLL文件的路径先后顺序如下: 1. EXE文件所在目录 2. 当前程序工作目录 3. 系统目录 4. Windows目录 4. 环境变量中所有目录

VC中 加载DLL的LIB文件 的方法如下: 1. LIB文件直接加入到工程文件列表中 2. 设置Project Settings加载LIB文件 3. 预编译指令 #pragma comment (lib, "*.lib")

显示调用:

当只提供DLL文件而没有其相关的LIB文件和头文件的情况下,只能使用显示调用。显示调用能够更加有效的使用内存,编写大型程序时往往使用显示调用。

该方法使用Load Library或者AfxLoadLibrary对DLL进行动态加载;使用GetProcessAdress获得所调用函数的指针;使用完毕后以Free Library或者AfxFreeLibrary将DLL从地址空间中卸载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值