下面先讲使用__declspec(dllexport)的方法:将类定义改为:class __declspec(dllexport) CInDLL 就可以了。 这样产生的工程在编译时是正确的但是在使用时会产生错误,因为你包含的头文件中也是使用__declspec(dllexport),而使用这个DLL的工程中并没有引出这个类,而是需要引入这个类)在使用时需要将类定义改为class __declspec(dllimport) CInDLL就可以了。
使用定义文件可以有效的避免这个问题,这种方法是利用宏定义在不同的地方产生不同的编译代码:在头文件中加入如下的代码:#ifdef _CLASSINDLL #define CLASSINDLL_CLASS_DECL __declspec(dllexport)#else #define CLASSINDLL_CLASS_DECL __declspec(dllimport)#endif#endif // ClassInDLL_H//将class __declspec(dllexport) CInDLL改为class CLASSINDLL_CLASS_DECL CInDLL{ CInDLL();……}在实现这个类的CPP文件的顶部加入#define _CLASSINDLL语句。
#define _CLASSINDLLCInDLL::CInDLL(){}……
这样一来在使用这个类时就可以不做任何改动了。
本文来源:CFAN 作者:佚名