我想知道是否可以定义模板化的 dllexport 函数。到目前为止,该功能尚未模板化,并且可以正常工作。代码是这样的:
模块.cpp:
#if defined(__cplusplus)
#define DLL_Export extern "C" __declspec(dllexport)
#else /* __cplusplus */
#define DLL_Export __declspec(dllexport)
#endif /* __cplusplus */
...
VirtualTPM * virtual_tpm;
...
DLL_Export void TestPointModule_Check(string name, void * value){
virtual_tpm->CheckTestPoint(name, value);
}
但是,我需要扩展 TestPointModule_Check 函数来管理其他数据类型,所以我创建了一个模板化的 CheckTestPoint(...) 函数,我尝试了这个:
模块.cpp:
...
template <typename T>
DLL_Export void TestPointModule_Check(string name, void * value){
virtual_tpm->CheckTestPoint<T>(name, value);
}
但这给了我以下错误:错误C2988:无法识别的模板声明/定义
VirtualTPM::CheckTestPoint<T>
正确定义了,因为我可以毫无错误地调用a virtual_tpm->CheckTestPoint<int>(name, value);
。
有没有办法做我需要的?我可以将模板限制为 4 种不同的数据类型(事实上,我在为VirtualTPM::CheckTestPoint<T>
函数定义模板时这样做了,但我不知道该怎么做。