2010-01-30 65 views
6

我最近遇到了一个安装在我的系统上的DLL,依赖Walker(以及我试过的每一个其他工具)都表示,按名称或序号导出零,但文件大小约为4MB。我认为DLL的唯一目的是导出函数供其他代码使用,那么dll的目的是什么,没有可见的导出?DLL如何导出零值?

回答

4

想到DLL的一种方式是作为函数的容器。从DLL导出函数使这些函数对DLL之外的调用者可见。虽然从DLL中导出函数可能是提供对它们访问的最常用方式,但许多平台还提供了其他方法来访问尚未导出的函数,如.NET Framework和Java中的反射以及(我认为)LoadLibtary/GetProcAddress in Win32的

理由这样做是多种多样的,往往是因为它是对开发商有利的在库功能,但不希望为这些功能从外部应用程序

+0

哦,这是有道理的。我从来没有意识到(或者甚至想过),如果你写了它,可能有办法使用DLL而不是通过导出表。 – 2010-01-30 04:54:30

3

资源DLL调用,也许?例如,这些常用于本地化目的。

编辑:它也有可能有一个代码在DllMain()中做某事的DLL,以某种方式使其功能可用。例如,该DLL可以向某个全局调度器注册自己,或者创建命名的内核对象...