什么是DLL的延迟加载(Delay Load)?用延迟加载有什么好处?
当一个应用程序过多加载dll的时候,如果都是在启动时加载,那么无疑会减慢程序启动速度,而且会让初始的程序就占用很大内存
空间,但并不是所有的dll都是经常使用的,有些可能仅在特殊情况下才会使用到,比如你需要打印功能时,额外的一个dll用于负责
此事,但这项功能可能很少人使用,如果程序一启动就加载会有些浪费,谓词微软提供了延迟载入dll的功能,就是当你执行到某个
函数的时候,如果是首次执行,那么可以在用到时加载该dll,甚至可以在用完再重新释放卸载掉该dll
好处是:
1)告诉编译器将该dll文件从可执行模块的导入段中去除,这样初始化的时候就不会加载该dll了,
2)在可执行模块嵌入一个新的延迟载入段(即Delay import section称为.didata)来表示要从mydll。dll中导入哪些函数
3)通过让延迟载入函数的调用跳转到__delayLoadHelper2函数,来完成对延迟载入函数的解析。