2012-05-15 46 views
0

我有一類這樣的dllimport的和模板在微軟的Visual C++

class A_DLL A 
{ 
    ... 
    template <class T> someFunction(const T &v); 
} 
庫A.DLL

。使用a.dll時,A_DLL在構建a.dll時爲__declspec(dllexport),在使用a.dll時爲__declspec(dllimport)

問題是,當我嘗試在某些可執行模塊中使用'someFunction'時,它與a.dll鏈接。但是,當我在其他庫(b.dll)中使用它時,它會給我一個關於未解析的外部(someFunction和其他模板)的錯誤消息。顯然,我不應該在模板上使用__declspec,但是如何使用__declspec來製作課程?

+0

這可能不是問題。從exe或dll中調用它應該沒有區別。你確定你連接圖書館嗎? –

+0

以及庫和exe使用a.dll的其他功能沒有任何問題。到目前爲止,我唯一的解決方案是使模板函數全局化(並將它們添加爲A類的朋友)。這似乎工作。 –

回答

4

您可以使用像聲明:

template class A_DLL MyTemplateClass<int>; 

此語句將生成模板類實例化和導出爲正在構建的DLL(或導入它取決於如何A_DLL從預處理器設置)。

您也可以關注此link以獲取更詳細的說明。