我最近收購了我打算使用的3D遊戲引擎的C++源代碼。不過,我的C++編程技能遠非傳奇,我肯定發現C#更易於使用。我已經看到完全用C++實現的組件,並且只有一套.NET中的包裝類,它們沒有源代碼 - 相反,它們使用[ComImport]
關鍵字直接指向DLL的類,將類標記爲外部類,而public虛擬外部'關鍵字將功能標記爲外部。因此,是否有可能使用SWIG,在C#中創建類和方法,直接鏈接到C++遊戲引擎的DLL中的類和方法?所以我應該能夠直接在.NET中實例化C++引擎的類,並從.NET中控制它們。這可能嗎?從C#使用SWIG使用C++遊戲引擎
1
A
回答
1
如果您的C++類是COM對象,則只能使用[ComImport]。很有可能他們沒有被賦予這是一個遊戲引擎。 (搜索你的C++代碼的COM方法,如CoInitialize肯定知道)
鑑於你有源碼,理論上SWIG會爲你的C++創建C#包裝器,而不需要你將C++類作爲COM對象,但是不要期待這是完全微不足道的。
我過去採用的另一種方法是爲我的C++(google'extern「c」')編寫'C'封裝器,然後使用pinvoke輕鬆創建C#封裝器。在這種情況下,這是否可能取決於C++ API。
記住,任何C#=>天然的(C,C++等)會涉及到一些性能損失。多少將取決於C# - > native(或native - > C#)調用的頻率。
相關問題
- 1. 在C++ iPhone遊戲中使用Objective-C遊戲引擎?
- 2. C++ 3D遊戲引擎
- 3. 使用Lua在C++遊戲引擎中定義NPC行爲
- 4. 在遊戲引擎中使用monotouch
- 5. 使用python腳本的遊戲引擎?
- 6. 遊戲引擎與Eclipse使用API 14
- 7. 如何使用Flash遊戲引擎?
- 8. 開發一款不使用遊戲引擎的簡單遊戲?
- 9. 的Android 2D遊戲開發使用Unity遊戲引擎
- 10. 使用C++ ai引擎和ASP.NET C#編寫的紙牌遊戲頁面
- 11. Monodroid C#2D遊戲引擎爲我的遊戲?
- 12. 使用SWIG和C++
- 13. Html5遊戲引擎
- 14. 適用於Android的C++渲染或遊戲引擎。
- 15. 簡單的C++,用於linux的opengl遊戲引擎?
- 16. 用Lua製作一個C++遊戲引擎
- 17. 磚塊遊戲的JavaScript遊戲引擎
- 18. 使用C#腳本更改Unity遊戲引擎中的對象紋理
- 19. 如何使用SWIG從C++調用Java?
- 20. 進程間通信C#<-->用於遊戲調試引擎的C++
- 21. C#GUI骰子游戲通過引用
- 22. 構建一個簡單的HTML5/canvas 2D遊戲。遊戲引擎推薦使用?
- 23. 使用Unity遊戲引擎可以在Linux上開發遊戲嗎?
- 24. Android 2D遊戲:我應該使用框架佈局還是遊戲引擎?
- 25. 使用Qt和C++開發遊戲
- 26. XNA遊戲工作室4.0使用C#
- 27. XO遊戲使用c#和ASP.NET
- 28. 使用C進行遊戲開發#
- 29. 使用C#和Unity開發Android遊戲
- 30. c + +使用數組的拼字遊戲
不確定SWIG是什麼,但在回答關於使用COM類的問題時,您絕對可以使用託管代碼中的COM類。 CLR圍繞COM類創建一個運行時可調用的包裝器。您也可以使用P/Invoke調用本地代碼。 – 2013-02-10 08:22:27