首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

DLL会导出模板类

2012-08-01 
DLL能导出模板类?Base.DLL导出了个模板类,为什么不EXE链结的时候有问题?// Base.DLLclassBase{virtual voi

DLL能导出模板类?
Base.DLL导出了个模板类,为什么不EXE链结的时候有问题?


// Base.DLL
class Base
{
  virtual void fun();
}
class A: public Base
{
  virtual void fun();
}
class B: public Base
{
  virtual void fun();
}

template<class Type>
class C: public Base
{
  virtual void fun()  
  {
  _pT-> fun();
  }
  CT *_pT;
}




// EXE

C<B> *pC = new C<B>;
pC->fun();


 请问为什么会有链结错误?
 

[解决办法]
dll 不能导出模板
[解决办法]
不能,没办法,目前多数主流编译器仍然不支持实现与声明相分离的模板代码。
[解决办法]
模板就是代码级的复用,没法DLL导出的。
[解决办法]
不得行,模板是在编译期起作用的
[解决办法]
up星语
[解决办法]
up 模板编译的分离模式大部分编译器是不支持的
[解决办法]
模板函数/类不能导出到动态链接库(DLL) 
2008年07月08日 星期二 17:56 

模板函数在声明的时候, 其实并不存在,函数地址也就无从谈起了,而导出到动态链接库的函数都需要有地址,也就是说——函数模板不具备导出的基本条件。

函数模板在调用时后,有了具体的实现,这个时候才有了地址。 如果要导出,必须将参数类型列表具体化,比如说,有这么一个模板: 

template <class T1,class T2> 

void fn1(T1 testValue1,T2 testValue2) 





将参数列表具体化 

template <int,char*> __declspec(dllexport) void fn1(int testValue1,char* testValue2) 

}

热点排行