我有一個C++類庫項目,該項目通常由其他C++項目使用。爲了能夠使用我的類庫項目中的類,我寫了一個頭文件中像下面在類庫項目中創建模板類C++
#pragma once
#ifdef MYLIB
# define MYLIB_EXPORT __declspec(dllexport)
#else
# define MYLIB_EXPORT __declspec(dllimport)
#endif
沒問題給出直到我要創建我的類庫項目中模板類的例子。問題是我無法導出我的模板類。
MyClass.h
template<class T>
class MYLIB_EXPORT MyClass
{
void myMethod();
// ...
}
template<class T>
void MyClass::myMethod()
{
// ...
}
在這種情況下,我得到compilaton錯誤說: 「不準dllimport的函數的定義」。我知道是什麼原因導致這個問題,我理解它。其他使用我的類庫項目的項目將MYLIB_EXPORT關鍵字轉換爲__declspec(dllimport)。因此,他們期望在DLL中定義MyClass的方法。但是,編譯器會在頭文件中看到定義。
如何克服這種情況,並能夠導出我的類庫項目中定義的模板類?