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