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

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read