使用C++;C#使用SWIG的游戏引擎 我最近获得了我计划使用的3D游戏引擎的C++源代码。但是我的C++编码技巧远没有传奇色彩,我确信C很容易使用。我已经看到了完全在C++中实现的组件,并且在.NET中只有一套包装类,没有源代码——而是直
使用C++;C#使用SWIG的游戏引擎使用C++;C#使用SWIG的游戏引擎 我最近获得了我计划使用的3D游戏引擎的C++源代码。但是我的C++编码技巧远没有传奇色彩,我确信C很容易使用。我已经看到了完全在C++中实现的组件,并且在.NET中只有一套包装类,没有源代码——而是直,c#,c++,.net,wrapper,swig,C#,C++,.net,Wrapper,Swig,使用C++;C#使用SWIG的游戏引擎 我最近获得了我计划使用的3D游戏引擎的C++源代码。但是我的C++编码技巧远没有传奇色彩,我确信C很容易使用。我已经看到了完全在C++中实现的组件,并且在.NET中只有一套包装类,没有源代码——而是直接使用DLL代码的“类代码> [COMIMPITC] < /COD>关键字来标记外部类,以及‘公共虚拟外部’”关键字来标记函数为外部函数。因此,是否可以使用Cig中的SWIG、创建类和方法,直接连接到C++游戏引擎的DLL中的类和方法?因此,我
我最近获得了我计划使用的3D游戏引擎的C++源代码。但是我的C++编码技巧远没有传奇色彩,我确信C很容易使用。我已经看到了完全在C++中实现的组件,并且在.NET中只有一套包装类,没有源代码——而是直接使用DLL代码的“类代码> [COMIMPITC] < /COD>关键字来标记外部类,以及‘公共虚拟外部’”关键字来标记函数为外部函数。因此,是否可以使用Cig中的SWIG、创建类和方法,直接连接到C++游戏引擎的DLL中的类和方法?因此,我应该能够直接在.NET中对C++引擎的类进行实例化,并从.NET中控制它们。这是可能的吗?
如果C++类是COM对象,则只能使用[COMIMPIL]。很有可能他们没有得到这是一个游戏引擎。(搜索COM方法的C++代码,如CONPROSTALIZE,以确定)
假设你有这个源码,理论上SWIG会为C++创建C包装,而不需要C++类作为COM对象,但是不要期望这是完全微不足道的。
过去我所采取的另一种方法是为我的C++编写一个‘C’包装器(谷歌’s ExtEngult’c’),然后使用PrPoCK很容易创建C.*包装器。在你的情况下,这是否可能取决于C++ API。
请记住,任何C=>>本机(C,C++等)都会涉及到一些性能损失。多少取决于C~(->)本机(或NET-> C)的调用是多么频繁。 < P>如果C++类是COM对象,只能使用[COMIMPIL]。很有可能他们没有得到这是一个游戏引擎。(搜索COM方法的C++代码,如CONPROSTALIZE,以确定)
假设你有这个源码,理论上SWIG会为C++创建C包装,而不需要C++类作为COM对象,但是不要期望这是完全微不足道的。
过去我所采取的另一种方法是为我的C++编写一个‘C’包装器(谷歌’s ExtEngult’c’),然后使用PrPoCK很容易创建C.*包装器。在你的情况下,这是否可能取决于C++ API。
请记住,任何C=>>本机(C,C++等)都会涉及到一些性能损失。多少取决于C#->本机(或本机->C#)调用的频率。不确定SWIG是什么,但在回答有关使用COM类的问题时,您可以从托管代码中使用COM类。CLR围绕COM类创建一个运行时可调用的包装器。您还可以使用P/Invoke调用本机代码。不确定SWIG是什么,但在回答有关使用COM类的问题时,您可以非常明确地使用托管代码中的COM类。CLR围绕COM类创建一个运行时可调用的包装器。您还可以使用P/Invoke调用本机代码。