VC++
Example: Using one
VC++ extension DLL in another VC++ Extension Dll
|
|
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"
|