
C# 程序实现动态调用
DLL
的研究
摘 要:在《 开发高手》 年第 期中的《化功大法——将 !"" 嵌入 #$#》一文,
介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从
资源中释放出来,通过静态加载延迟实现DLL函数的动态加载,程序退出后实现临时文件的
自动删除,从而为解决“!""%&'提供了一种解决方案。这是一个很好的设计思想,而且该作
者也用 ())实现了,在 * 上也有相似的 +, 程序,但在某一技术论坛上提起这种设计
方法时,有网友提出:“这种方法好是好,但就是启动速度太慢”。这是因为程序启动时实现
!"" 释放,然后再加载释放出来的 !"",这个过程会耗费一定的时间。鉴于此问题,经过思索,
提出另一个设计方案:!"" 作为资源文件嵌入程序,但不需进行 !"" 释放及其重新加载。本文
就是对该设计方案的原理分析及使用 (-编程来实现该设计方案。
关键词:动态调用 !"",嵌入 !"",(-
正 文:
一、 DLL 与应用程序
动态链接库(也称为 !"",即为“!.%"/%".'的缩写)是 01%
23 最重要的组成要素之一,打开 23 系统文件夹,你会发现文件夹中有很多
!"" 文件,23 就是将一些主要的系统功能以 !"" 模块的形式实现。
动态链接库是不能直接执行的,也不能接收消息,它只是一个独立的文件,其中包含能被
程序或其它 !"" 调用来完成一定操作的函数4方法。注:(-中一般称为“方法”5,但这些函数不
是执行程序本身的一部分,而是根据进程的需要按需载入,此时才能发挥作用。
!"" 只有在应用程序需要时才被系统加载到进程的虚拟空间中,成为调用进程的一部分,
此时该 !"" 也只能被该进程的线程访问,它的句柄可以被调用进程所使用,而调用进程的句柄