65.9K
CodeProject 正在变化。 阅读更多。
Home

在一个扩展 DLL 中使用另一个 DLL

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.33/5 (3投票s)

1999年12月16日

viewsIcon

69959

如何避免在使用一个 MFC 扩展 DLL 时发生链接错误

如果你创建了一个扩展 DLL,最方便的方法是使用 AFX_EXT_CLASS 导出一个或多个类。但是,如果你创建第二个扩展 DLL 并尝试使用第一个 DLL 中的类,你将会遇到一个小问题。

AFX_EXT_CLASS 的值会导致你的新 DLL 尝试导出你依赖的类! 你会得到如下所示的链接错误,针对第一个 DLL 中的类:

错误 LNK2001:无法解析的外部符号 ..........

你需要做的是在包含从你导入类的 DLL 的头文件时,临时重新定义 AFX_EXT_CLASS。 以下示例展示了如何操作:

//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"

© . All rights reserved.