2011-02-09 61 views

回答

2

你通常不需要包裝器,許多具有直接導出的C函數的DLL可以用[DllImport]屬性進行調整。 C導出的例外是設計不佳的DLL,它需要客戶端代碼釋放內存,託管代碼無法完成,因爲它無法訪問分配器。

有一個包裝的情況是一個本地C++類。由於不知道如何創建類的實例(這需要知道對象的大小並調用構造函數),也不知道如何銷燬它(這需要調用析構函數),所以託管代碼無法直接調用它。在C++/CLI中執行起來非常簡單。非常機械的,SWIG項目可以自動完成。然而,學習這個工具比學習如何編寫包裝更重要。

+0

沒有完全理解。你說c類可以被調整,但C++不能?爲什麼? – 2011-02-10 06:25:41