最近再编写一个MFC软件,在添加一个对话框的时候遇到了这个错误,在网上找了好久都没有找到错误原因,该错误一般都是编译时候的链接错误,主要是以下两个原因造成
1.缺少lib
2.函数没有实现
经过排查没有发现错误,经过一天的排查,发现是在声明类的时候没有添加AFX_EXT_CLASS宏
这里学习一下该宏的意思:
使用 AFX_EXT_CLASS 导出和导入
扩展DLL使用 AFX_EXT_CLASS 宏导出类;链接到扩展 DLL 的可执行文件使用该宏导入类。使用 AFX_EXT_CLASS 宏,用于生成扩展 DLL 的相同头文件可以与链接到 DLL 的可执行文件一起使用。
在 DLL 的头文件中,将 AFX_EXT_CLASS 关键字添加到类的声明中,如下所示:
class AFX_EXT_CLASS CMyClass : public Cdocument{// };
当定义了预处理 _AFXDLL 和 _AFXEXT 时,该宏被 MFC 定义为 __declsp(dllexport).但当定义了 _AFXDLL 而未定义 _AFXEXT 时,该宏被定义为 __declspec(dllimport)。定义后,预处理器符号 _AFXDLL 指示共享 MFC 版本正在由目标可执行文件(DLL 或应用程序)使用。当 _AFXDLL 和 _AFXEXT 都定义了时,这指示目标可执行文件是扩展 DLL。
在添加了该宏之后就可以编译了。