簡體   English   中英

使用SWIG從C#使用C ++游戲引擎

[英]Using a C++ game engine from C# using SWIG

我最近獲得了計划使用的3D游戲引擎的C ++源代碼。 但是,我的C ++編碼技能遠非傳奇,因此我肯定會更容易使用C#。 我已經看到了用C ++完全實現的組件,並且在.NET中只有一組包裝器類,它們沒有源代碼-而是使用[ComImport]關鍵字將類標記為外部,從而直接指向DLL的類,並且“ public virtual extern”關鍵字將功能標記為外部。 因此,是否有可能使用SWIG,在C#中創建直接鏈接到C ++游戲引擎DLL中的類和方法的類和方法? 因此,我應該能夠直接在.NET中實例化C ++引擎的類,並從.NET控制它們。 這可能嗎?

如果C ++類是COM對象,則只能使用[ComImport]。 沒有給他們提供游戲引擎的可能性很大。 (在您的C ++代碼中搜索諸如CoInitialize之類的COM方法以確保確定)

有了源代碼,理論上SWIG會為C ++創建C#包裝程序,而無需讓C ++類成為COM對象,但是不要指望這完全是瑣碎的事情。

我過去采用的另一種方法是為C ++寫一個“ C”包裝器(谷歌“ extern“ c”“),然后使用pinvoke輕松創建C#包裝器。 在這種情況下,是否可行取決於C ++ API。

請記住,任何C#=>本機(c,c ++等)都會影響性能。 多少取決於C#->本機(或本機-> C#)調用的頻率。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM