Home | Overview | How Do I | FAQ | Details | Sample
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 AppWizard. |
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.