Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C++;C#使用SWIG的游戏引擎 我最近获得了我计划使用的3D游戏引擎的C++源代码。但是我的C++编码技巧远没有传奇色彩,我确信C很容易使用。我已经看到了完全在C++中实现的组件,并且在.NET中只有一套包装类,没有源代码——而是直_C#_C++_.net_Wrapper_Swig - Fatal编程技术网

使用C++;C#使用SWIG的游戏引擎 我最近获得了我计划使用的3D游戏引擎的C++源代码。但是我的C++编码技巧远没有传奇色彩,我确信C很容易使用。我已经看到了完全在C++中实现的组件,并且在.NET中只有一套包装类,没有源代码——而是直

使用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中的类和方法?因此,我

使用C++;C#使用SWIG的游戏引擎

我最近获得了我计划使用的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调用本机代码。