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






4.33/5 (3投票s)
1999年12月16日

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"