Using one extension DLL in another

If you create an extension DLL you can most conveniently export one or more of its classes using AFX_EXT_CLASS. However if you create a second extension DLL and try to use classes from the first you will run into a small problem.

The value of AFX_EXT_CLASS will cause your new DLL to try and export your dependent classes! You will get link errors such as below for the classes in the first DLL:

error LNK2001: unresolved external symbol ..........

What you need to do is temporarily re-define AFX_EXT_CLASS when you include the header files for the classes in the DLL you are importing classes from. The following example shows how to do this:

//change the definition of AFX_EXT... to make it import
#undef AFX_EXT_CLASS
#undef AFX_EXT_API
#undef AFX_EXT_DATA
#define AFX_EXT_CLASS AFX_CLASS_IMPORT
#define AFX_EXT_API AFX_API_IMPORT
#define AFX_EXT_DATA AFX_DATA_IMPORT

//Include headers for the dll / lib that we use classes from
#include "DLLOne.H"

//put the values back to make AFX_EXT_CLASS export again
#undef AFX_EXT_CLASS
#undef AFX_EXT_API
#undef AFX_EXT_DATA
#define AFX_EXT_CLASS AFX_CLASS_EXPORT
#define AFX_EXT_API AFX_API_EXPORT
#define AFX_EXT_DATA AFX_DATA_EXPORT

//Include headers for the classes we are creating in this DLL
#include "DLLTwo.H"

Posted: March, 8, 98