[英]Sharing objects between C# and C++ code
是否可以在C#和C ++代码之间共享对C#对象的引用而又不增加复杂性? 还是一般认为这是个坏主意?
在本机代码和托管代码之间共享C#对象的最佳解决方案是使用COM互操作。 这实际上使您可以在托管代码和C ++中的等效签名之间共享对象的接口。
至于事物的复杂性方面。 大多数COM互操作方案都是直截了当的,并且实际上并不比好的旧COM编程复杂。 在托管方面,它看上去与普通界面没有什么不同。
但是,一旦引入了多个线程或开始在COM公寓之间玩耍,事情就会变得有些棘手。
以我的经验,最简单的方法如下。
这将使接口定义进入两个项目。 如何在项目之间传递这些信息,需要对您的体系结构有更多的细节。
根据个人经验,我可以推荐的另一种解决方案是,如果要访问的C ++代码太大或太复杂,请在两者之间使用托管C ++接口。
例如,我在C#项目中使用RakNet C ++网络库。 解决方案是在C#中创建一个大型包装类以访问所需的C ++函数,围绕这些函数创建一个C ++包装器,然后将这些功能用作COM互操作或使用托管C ++(Visual C ++ / CLI)。
我选择了后者,这使我可以使用C ++访问RakNet库,但是创建的类可以像直接在其他.NET项目中直接使用。 因此,主要逻辑已在那些Managed C ++类中创建,这也使我可以使用.NET框架及其某些出色的功能。 在我的C#项目中,我只需要调用Managed C ++库即可为我提供执行所有功能所需的全部20个功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.