2010-01-30 40 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可以向某個全局調度器註冊自己,或者創建命名的內核對象...