テンプレート化された 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>
関数のテンプレートを定義するときにこれを行いましたが、その方法がわかりません。