2009-10-12 36 views
0

的客戶使用這似乎是一個常見的錯誤,但是大多數人在線選擇忽略警告並繼續前進。我不想忽視這個警告。轉換應用程序以使用dll。類'std :: map <_Kty,_Ty>'需要有dll接口才能被類

基本上,當使用__declspec(dllexport)將項目轉換爲使用dll時,編譯器無法處理模板和stl對象。對問題的解釋和建議的解決方案列出了here。我已經實現了針對地圖建議的巨大#define語句,但無濟於事。

你如何使這項工作!?我的代碼絕對是亂七八糟的,像wchar_ts和std :: maps,所以希望這個解決方案不需要爲每個類編寫遠程複雜的東西!

回答

1

閱讀this similar thread以便對該主題進行良好的討論。我建議以下任一操作:

  1. 使用靜態庫
  2. 隱藏所有template - 相關的類和接口的背後非templatecompiler firewallpimpl

與從Visual C++ 6.0的連接變化的戰鬥,到2003年後,然後到2005年,我永遠不會__declspec(dllexport)任何再有一個templateboolwchar_t,或在簽名time_t。實際上,我們只是完全停止使用DLL。生活現在變得如此簡單;)