Phobos and Tango deep dependancies

Jascha Wetzel firstname at mainia.de
Tue Oct 2 07:40:25 PDT 2007


Gilles G. wrote:
> And the dependancies are listed below:
>  * 10 Always loaded DLLs:
> MPR.DLL, ADVAPI32.DLL, GDI32.DLL, KERNEL32.DLL, MSVCRT.DLL, NTDLL.DLL, RPCRT4.DLL, SHELL32.DLL, SHLWAPI.DLL, USER32.DLL
> 
>  * 108 Delay loaded DLLs:
> ACTIVEDS.DLL, ADSLDPC.DLL, ADVPACK.DLL, APPHELP.DLL, ATL.DLL, AUTHZ.DLL, BROWSEUI.DLL, CABINET.DLL, CDFVIEW.DLL, CERTCLI.DLL, CFGMGR32.DLL, CLUSAPI.DLL, COMCTL32.DLL, COMDLG32.DLL, CREDUI.DLL, CRYPT32.DLL, CRYPTUI.DLL, CSCDLL.DLL, DBGHELP.DLL, DEVMGR.DLL, DHCPCSVC.DLL, DNSAPI.DLL, DUSER.DLL, EFSADU.DLL, ESENT.DLL, GDIPLUS.DLL, HLINK.DLL,HNETCFG.DLL ,IMAGEHLP.DLL, IMGUTIL.DLL, IMM32.DLL, INETCOMM.DLL, IPHLPAPI.DLL,
>  LINKINFO.DLL,LZ32.DLL ,MFC42U.DLL ,MLANG.DLL , MOBSYNC.DLL, MPRAPI.DLL, MPRUI.DLL, MSASN1.DLL, MSGINA.DLL, MSHTML.DLL, MSI.DLL, MSIMG32.DLL, MSJAVA.DLL, MSLS31.DLL, MSOERT2.DLL, MSRATING.DLL, MSSIGN32.DLL, MSVCP60.DLL, MSWSOCK.DLL, NETAPI32.DLL, NETCFGX.DLL, NETMAN.DLL, NETPLWIZ.DLL,
>  NETRAP.DLL, NETSHELL.DLL, NETUI0.DLL, NETUI1.DLL, NETUI2.DLL, NTDSAPI.DLL, NTLANMAN.DLL, ODBC32.DLL, OLE32.DLL, OLEACC.DLL, OLEAUT32.DLL,  OLEDLG.DLL, OLEPRO32.DLL, POWRPROF.DLL, PRINTUI.DLL, PSAPI.DLL, QUERY.DLL, RASAPI32.DLL, RASDLG.DLL, RASMAN.DLL, REGAPI.DLL, RTUTILS.DLL,  SAMLIB.DLL, SCECLI.DLL, SECUR32.DLL, SETUPAPI.DLL, SHDOCVW.DLL, SHSVCS.DLL, TAPI32.DLL, URLMON.DLL, USERENV.DLL, USP10.DLL, UTILDLL.DLL, UXTHEME.DLL, VERSION.DLL, W32TOPL.DLL, WINHTTP.DLL, WININET.DLL, WINMM.DLL, WINSCARD.DLL, WINSPOOL.DRV, WINSTA.DLL, WINTRUST.DLL, LDAP32.DLL, WMI.DLL, WS2_32.DLL, WS2HELP.DLL, WSOCK32.DLL, WTSAPI32.DLL, WZCDLG.DLL, WZCSAPI.DLL, WZCSVC.DLL
> 
> 
> This may be compared to phobos : 5 always loaded DLLs and 112 delay loaded DLLs.

Actually, Phobos and Tango executables only depend on KERNEL32.DLL and 
USER32.DLL. The rest of the DLLs you listed are dependencies of 
KERNEL32.DLL and USER32.DLL. KERNEL32.DLL uses NTDLL.DLL, USER32.DLL 
uses GDI32, ADVAPI etc. Especially USER32.DLL spans a whole tree of 
mostly delay loaded dependencies. The exact dependencies of USER32.DLL 
vary between windows versions.

KERNEL32.DLL contains memory management, IO, threading, etc.
USER32.DLL contains the GUI, window manager and such.

You cannot go without KERNEL32, USER32 might be obsolete, though. My CLI 
apps appear to only pull in MessageBoxA, although none of the D code 
(neither mine nor Phobos/Tango) uses it.
This is mostly a cosmetic problem, though, since USER32 is a fundamental 
system DLL that will always be loaded before your program starts.

Those additional DLLs that you listed for the Tango version, are static 
dependencies of USER32.DLL, they have to be loaded in the Phobos 
version, too.



More information about the Digitalmars-d mailing list