One way to think of a DLL is to use a container for functions. Exporting a function from a DLL makes these functions visible to callers outside the DLL. Although exporting functions from a DLL is perhaps the most common way to provide access to them, many platforms provide other ways to access functions that have not been exported, such as reflection in the .NET Framework and Java and (I think) LoadLibtary / GetProcAddress in Win32
The reasons for this vary, often due to the fact that it is useful for the developer to have functions in the library, but it is undesirable for those functions that will be called from external applications
Crippledsmurf
source share