我在添加新功能时将现有的C ++ COM库(STL,Boost& ATL)重写为C#。
然而,有一些经过良好测试的大型C ++类我不想重写。
从概念上讲(以及为了向后兼容)这些属于同一个COM库,但是我可以在C ++和C#之间画一条线条,这样所有的交互都是通过显式使用COM接口。
在同一个库中包含C#组件和C ++组件的最佳方法是什么?
答案 0 :(得分:1)
最好的方法是编写一个C#COM库作为包装器。您正在编写的新C#COM库听起来已经可以用于此目的。
在这个C#库中,您可以放置重写的C#代码和C ++代码的包装版本。至于如何包装 C ++代码,你可以在这里做两件事:
第一个允许您继续使用C#代码和语法,但在与C ++类的交互方面有一些限制(您只能访问DLL导出中公开的内容)。
第二种方法迫使你编写一些相当不愉快的C ++ / CLI包装器代码,但允许你在他们所有的荣耀中使用你的C ++类。
此链接here是一个非常有用的资源,用于为C ++库编写C ++ / CLI包装器。