在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
{
    //...
};
————————
#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
{
    //...
};