For normal class or function when we imported or exported has to go with two prototypes.
Exporting: When use in DLL project our prototype should be.
class __declspec(dllexport) CMyAboutBox;
Importing: When we are using in an application our prototype should be.
class __declspec(dllimport) CMyAboutBox;
For MFC we use only one common prototype i.e.
class AFX_EXT_CLASS CMyAboutBox;
AFX_EXT_CLASS macro is actually defined in two way for two projects thus we are able to use only one prototype.
Definitions are like the following:
// for classes #ifndef AFX_CLASS_EXPORT #define AFX_CLASS_EXPORT __declspec(dllexport) #endif #ifndef AFX_CLASS_IMPORT #define AFX_CLASS_IMPORT __declspec(dllimport) #endif #ifdef _AFXEXT #define AFX_EXT_CLASS AFX_CLASS_EXPORT #else #define AFX_EXT_CLASS AFX_CLASS_IMPORT #endif
When we are using a DLL project _AFXDLL and _AFXEXT are defined in preprocessors in the project settings thus the resultant expanded form is
Class __declspec(dllexport) CMyAboutBox;
For Application project _AFXEXT macro is not defined thus
thus the resultant expanded form is
class __declspec(dllimport) CMyAboutBox;
About our authors: Team EQA
You have viewed 1 page out of 27. Your DLL learning is 0.00% complete. Login to check your learning progress.
Learn on Youtube


Questions index C Questions C++ Questions Win32 MFC COM/DCOM DLL Questions