Determining Which DLLs to Redistribute

To determine which DLLs you have to redistribute with your application, collect a list of the DLLs that your application depends on. One way to collect the list is to run Dependency Walker (depends.exe) as described in Understanding Dependencies of a Visual C++ Application.

When you have the list of dependencies, compare it to the list in Redist.txt, which by default is located in the \Program Files\Microsoft Visual Studio 2010\ directory (or the user-defined directory designated by the VSINSTALLDIR environment variable). You cannot redistribute all of the files that are included in Visual Studio; you are only permitted to redistribute the files that are specified in Redist.txt. Debug versions of applications and the various Visual C++ DLLs are not redistributable. For more information, see Choosing a Deployment Method.

The following table describes the Visual C++ DLLs your application might depend on. To determine whether a DLL is redistributable, check Redist.txt.

Visual C++ Library

Description

Applies to

atl100.dll

Active Template Library (ATL).

Applications that use ATL.

msvcr100.dll

C Runtime Library (CRT) for native code.

Applications that use the C Run-Time Libraries.

msvcp100.dll

Standard C++ Library for native code.

Applications that use the Standard C++ Library.

mfc100.dll

Microsoft Foundation Classes (MFC) Library.

Applications that use the MFC Library.

mfc100u.dll

MFC Library with Unicode support.

Applications that use the MFC Library and require Unicode support.

mfcmifc80.dll

MFC Managed Interfaces Library.

Applications that use the MFC Library with Windows Forms Controls.

mfcm100.dll

MFC Managed Library.

Applications that use the MFC Library with Windows Forms Controls.

mfcm100u.dll

MFC Managed Library with Unicode support.

Applications that use the MFC Library with Windows Forms Controls and require Unicode support.

For more information about how to redistribute these DLLs with your application, see Redistributing Visual C++ Files. For examples, see Deployment Examples.

Typically, you do not have to redistribute system DLLs (for example, Kernel32.dll, User32.dll, Ole32.dll, or ShDocVW.dll) because they are part of the operating system and are present on any computer that has the same version of the operating system. However, there might be exceptions, for example, when your application will run on several versions of Microsoft operating systems. In this case, be sure to read the corresponding license terms. Also, try to get the system DLLs upgraded either through service packs or by small redistributable packages made available by Microsoft. You may be able to locate available packages by searching on the Microsoft Support website.

See Also

Concepts

Choosing a Deployment Method

Other Resources

Deployment (Visual C++)