在没有明确规范的情况下,从 DLL 导出模板化类可能会导致一些问题,因为模板化类在编译时会被实例化,而 DLL 的导出是在链接时完成的。为了解决这个问题,可以考虑以下方法:
template class __declspec(dllexport) MyTemplate<int>;
这将导出一个名为 MyTemplate<int>
的模板实例,可以在其他模块中使用。
#ifdef MY_DLL_EXPORT
#define MY_DLL_API __declspec(dllexport)
#else
#define MY_DLL_API __declspec(dllimport)
#endif
template class MY_DLL_API MyTemplate<int>;
这将导出一个名为 MyTemplate<int>
的模板实例,并在其他模块中使用。
需要注意的是,导出模板化类可能会导致一些问题,例如模板实例的数量增加、模板实例的大小增加等。因此,在使用模板化类时,应该谨慎考虑其使用场景和实现方式。
领取专属 10元无门槛券
手把手带您无忧上云