您现在的位置:首页 >> API >> API >> 内容

Delphi中LoadLibrary的使用心得

时间:2011/9/3 14:51:20 点击:

  核心提示:如果进行FreeLibrary,刚好这个类以外别的地方也加载过这个DLL,也要用这个DLL时,岂不就会有问题了?想了各种各样的检测方法和管理方法,依然觉得有逻辑漏洞。那么能不能不手动FreeLibra...
如果进行FreeLibrary,刚好这个类以外别的地方也加载过这个DLL,也要用这个DLL时,岂不就会有问题了?想了各种各样的检测方法和管理方法,依然觉得有逻辑漏洞。     那么能不能不手动FreeLibrary,而由程序终结时自动处理呢?一些情况下是可以的,但一些情况下是不行的。例如说程序中使用了ShareMem,而又加载了BPL,让程序自然结束的话,是会出错的,必须手动先把BPL卸掉。很不巧我碰到了这种情况。     于是还是求助帮助文档吧,还真是一看眼前一亮,赫然发现:“LoadLibrary maps the module into the address space of the calling process, if necessary, and increments the module's reference count, if it is already mapped. GetModuleHandle, however, returns the handle of a mapped module without incrementing its reference count.”原来,LoadLibrary内部是自己维护了一个引用计数的,也就是说,LoadLibrary两次再FreeLibrary一次,DLL依然可以正常使用。     开头的问题自然也迎刃而解了 - 当然是照Free不误啦

作者:网络 来源:转载
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
本类推荐
  • 没有
本类固顶
  • 没有
  • 盒子文章 技术支持:深圳市麟瑞科技有限公司(www.2ccc.com) © 2024 版权所有 All Rights Reserved.
  • 粤ICP备10103342号-1