|Important||This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer|
Initializing a DLL
Typically, your DLL has initialization code (such as allocating memory) that must execute when your DLL loads. When using Visual C++, where you add code to initialize your DLL depends on the kind of DLL you are building. If you don't need to add initialization or termination code, there's nothing special you have to do when building your DLL. If you need to initialize your DLL, the following table describes where to add your code.
|Kind of DLL||Where to add initialization and termination code|
|Regular DLL||In the DLL's CWinApp object's InitInstance and ExitInstance.|
|Extension DLL||In the DllMain function generated by the MFC DLL Wizard.|
|Non-MFC DLL||In a function called DllMain that you provide.|
In Win32, all DLLs may contain an optional entry-point function (usually called DllMain) that is called for both initialization and termination. This gives you an opportunity to allocate or release additional resources as needed. Windows calls the entry-point function in four situations: process attach, process detach, thread attach, and thread detach.
The C run-time library provides an entry-point function called _DllMainCRTStartup, and it calls DllMain. Depending on the kind of DLL, either you should have a function called DllMain in your source code or you should use the DllMain provided in the MFC library.
What do you want to do?
What do you want to know more about?
- The C run-time library behavior and _DllMainCRTStartup
- The function specification for DllMain (Platform SDK)
- Dynamic-link library entry-point function (Platform SDK)