我试图创建模板工厂类,导出一个创建方法:dllexport'ing静态模板方法
template <typename T>
class ClassFactory
{
_declspec(dllexport) static void* Create()
{
return new T;
}
};
class Foobar : ClassFactory<Foobar>
{
std::string foo;
};
此代码编译就好了,但我没有看到在出口表时什么我看DUMPBIN /出口
下面的代码创建出口的输出()正确:
class ClassFactoryBase
{
_declspec(dllexport) virtual void* Create() = 0;
};
template <typename T>
class ClassFactory : ClassFactoryBase
{
void* Create()
{
return new T;
}
};
class Foobar : ClassFactory<Foobar>
{
std::string foo;
};
不过,我需要创建()是静态的。为什么样本2有效,而样本1没有?有没有办法导出静态模板方法?
您的编译器不支持模板的外部链接。几乎没有人会支持它的模块。导出无法工作,您必须将模板定义移动到头文件中。 – 2012-04-11 11:00:49