因项目需要自己封装了一个MFC的拓展DLL文件,在测试使用这个DLL的时候,编译过程中出现ERROR C2470的报错提示信息,,双击报错信息,指向了我在dll工程中定义的一个头文件(这里需要说明一下的是,我是将一个类封装为DLL的),即类的声明部分,如下:
class OPCLIB_EXT_CLASS CWrapper
{
//实现具体功能
}
右键
OPCLIB_EXT_CLASS,查找其的定义,发现未声明,
此处需要说明的是OPCLIB_EXT_CLASS是定义的一个宏对应的是AFX_CLASS_IMPORT/AFX_CLASS_EXPORT,在DLL工程文件中的stdafx.h中进行定义的,而在引用DLL的工程文件中,未定义上述宏,这就是出现报错的原因。在引用的DLL工程的stdafx.h文件中,添加定义,编译运行,一切正常。添加的代码内容如下:
#ifdef OPCLIB
#define OPCLIB_EXT_CLASS AFX_CLASS_EXPORT
#define OPCLIB_EXT_API AFX_API_EXPORT
#define OPCLIB_EXT_DATA AFX_DATA_EXPORT
#else
#define OPCLIB_EXT_CLASS AFX_CLASS_IMPORT
#define OPCLIB_EXT_API AFX_API_IMPORT
#define OPCLIB_EXT_DATA AFX_DATA_IMPORT
#endif
以上。