Dynamic-Link Library (DLL) files are part of most software programs. DLLs are considered modules and may contain both data and functions that are used by either another DLL or the application program itself. These files increase the processing efficiency of programs by not being loaded into computer memory until needed and being unloaded after each use. Not only does this make the program run faster, but it decreases the total size of the application program, resulting in faster load times.
DLLs are integral to the operation of almost all existing software programs. Typically many hundreds or even thousands of DLLs reside on every computer. They tend to be small programs, mostly between 200Kb to 600Kb. In Windows compatible software, generally these models are found in the System32 folder under the Windows folder. Because of the complexity of modern software programs, DLLs may fill a gigabyte or more of disk space. They are vital to running application software and any corrupted or missing DLLs can cause a malfunction in the program.
More than one process may use the same DLL, thereby decreasing the number of files that need to be loaded into physical memory. Changes in the data or functions in a DLL can be made and updated without requiring the re-working of the application code itself as long as the call to load the DLL remains the same. This is particularly useful for hardware upgrades, such as a new monitor coming on the market. If the original display driver DLL does not include information on the new monitor, an upgraded DLL can be sent to users.
Computer programs interact with the operating system and other programs using the Application Programming Interface (API) system. The system is composed of multiple modules. These API modules use function calls from within the application software to link to different sub-programs in order to accomplish some task. APIs are collected within a group of DLL files. Other DLLs interact with software, such as database systems. Operating systems like Windows or the Mac O can require 1,000 or more APIs.
DLLs function in different ways. There are Load-Time DLLs and Run-Time DLLs. The Load-Time types, if not available when the program loads, cause an error that ends the operation. Run-Time dynamic links, given the proper coding, can react to an error condition and attempt to deal with it. Some DLLs support functions that are exported, that is, they come into play when called from other routines. Others (internal DLLs) carry on some action within the DLL itself.
Creating dynamic link libraries requires a high degree of professional programming skills. Even a simple, one action DLL that will print a string on the display can take several dozen lines of code with complex commands. One slight error in the code is capable of causing a bug in new software under development. Considering the numbers of DLLs involved in a complex program such as Microsoft Word for Windows, it probably is not surprising how much time it takes to debug software.