Dot-Net
C++ /CLI 自動包裝器生成器
在我們的項目中,我們有大量的本機 C++ 程式碼,我們希望從用 .Net 編寫的全新 UI 層重用這些程式碼。
我想使用 C++/CLI 來解決這個問題,並且我已經看到有一種非常直接且相當技術性的方法可以通過使用瘦託管類包裝本機類來做到這一點。我希望能夠找到一種工具來自動完成這項任務,因為在我看來,這確實是一個技術問題,沒有很多必需的“人”思維。
有這樣的工具為此使用顯式 p/invoke - 請參閱http://www.swig.org/Doc1.3/CSharp.html。問題是顯式 p/invoke 更麻煩,性能效率更低。
有沒有人熟悉這種工具?
此類工具尚不可用是否有內在原因?
p/invoke 效率較低的原因是因為它必須是任何函式的非常通用的介面,只知道簽名。您假設的包裝器生成器不會表現得更好。
另一方面,編寫自定義包裝器類的開發人員有更多關於一起使用的函式的資訊等等,因此可以避免許多緩慢和不必要的轉換,例如通過將值直接儲存在包裝器內部而不是將它們轉換為一些對 .NET 友好的格式。
所以並不是說這樣的工具是不可能的,它幾乎沒有好處。如果您關心性能,則可以編寫自己的包裝器,並帶有生命週期管理智能指針等。
當然,p/invoke 只提供對裸函式的訪問。這就是 SWiG 應該提供幫助的地方,它可以通過裸導出函式公開任何 C++ 類介面。
我確實找到了一個可能是您正在尋找的工具的線索,儘管它聽起來很狹窄: