在DLL中封装模板类的问题
在Dll中封装类是用定义一个宏来区分导出标识的
#ifdef DLLCLASS_EXPORTS #define DLL_CLASS _declspec(dllexport) //Dll #else #define DLL_CLASS _declspec(dllimport) //使用者 #endif
在类的声明时在Class 和类名之间加上DLL_CLASS就能导出类了
class DLL_CLASS QWnd
{
//....
};
但是今天我想封装一个模板类就不行了
//模板链表类 template <class T> class DLL_CLASS QList { //... };
就出现编译错误
后来在网上查询后才知道,模板类在使用者调用的时候不能用导出宏,所以修改宏定义为:
#ifdef DLLCLASS_EXPORTS #define DLL_CLASS _declspec(dllexport) //Dll #define DLL_TEMPLATE_CLASS _declspec(dllexport) //模板类的导出 #else #define DLL_CLASS _declspec(dllimport) //使用者 #define DLL_TEMPLATE_CLASS #endif
模板类就用DLL_TEMPLATE_CLASS 宏来导出类,其他类用DLL_CLASS宏
//模板链表类 template <class T> class DLL_TEMPLATE_CLASS QList { //... };
签名:GreenLeaf1976