Determining Which DLLs to Redistribute
Updated: October 2008
The first step in determining which files you need to redistribute with your application is to clearly understand the dependencies of this application and collect a list of dependent DLLs by using, for example, Dependency Walker (depends.exe) as described in Understanding Dependencies of a Visual C++ Application.
As you use DUMPBIN or depends.exe to view your dependencies, use the file list in Redist.txt to see which of the DLLs that your application depends on are Microsoft-supplied DLLs that are part of Visual Studio. Redist.txt is located in the Program Files\Microsoft Visual Studio 2005 directory on the second Visual Studio 2005 product CD or on the DVD. Below is a list of Visual C++ files your application might depend on. However, only files specified in Redist.txt may be redistributed with your application. Note that debug versions of an application are not redistributable and that none of the debug versions of the various Visual C++ dynamic-link libraries (DLLs) are redistributable. For additional information, please see Choosing a Deployment Method.
Visual C++ Library
Active Template Library (ATL).
Applications that use ATL.
C Runtime Library (CRT) for native code.
Applications that use the C Run-Time Libraries.
CRT and Standard C++ Library for managed and mixed code.
Standard C++ Library for native code.
Applications that use the Standard C++ Library.
Microsoft Foundation Classes (MFC) Library.
Applications that use the MFC Library.
MFC Library with Unicode support.
Applications that use the MFC Library and require Unicode support.
MFC Managed Interfaces Library.
MFC Managed Library.
MFC Managed Library with Unicode support.
Normally, you should not need to redistribute system DLLs (for example, Kernel32.dll, User32.dll, Ole32.dll, or ShDocVW.dll) because these DLLs are part of the operating system and are present on any computer with the same version of the operating system installed. However, there might be exceptions, such as in the case where your application is going to run on several versions of Microsoft operating systems. Be sure to read the corresponding licensing agreements if you encounter such a need. If possible, try to get the system DLLs upgraded either through service packs or by small redistributable packages made available by Microsoft. You can search and identify any such available packages from the Knowledge Base articles in the MSDN Library or at http://support.microsoft.com.