SharpGen对SharpDX以外的其他项目有用,还是应该使用SWIG?

时间:2013-01-21 17:48:25

标签: .net wrapper generator swig managed

有没有人使用SharpGen(来自SharpDX)在SharpDX本身以外的其他项目中生成包装器?我不想决定是使用SharpGen还是Swig来生成C ++库的包装器。

由SharpGen创建的生成的代码似乎很快(因为SharpDX被称为托管世界中最快的DirectX-Wrapper)。但SharpGen没有太多的文档记录。另一方面,Swig有更好的文档记录,但可能没有像SharpGen那样优化速度,我不需要多语言生成功能(此时只需要C#/ .Net)。有什么经验可以分享吗?

1 个答案:

答案 0 :(得分:4)

SWIG是一个记录良好的通用互操作包装器,而SharpGen确实是SharpDX中使用的内部工具,专门用于C ++ COM接口(或带有虚拟纯方法的C ++类)。虽然SWIG需要编译C ++存根,但SharpDX正在完全从.NET执行整个互操作(因此您可以享受AnyCPU的优势)。 SharpGen还没有被打包以便在SharpDX版本之外轻松使用,但该工具本身可以在没有SharpDX的情况下使用,但它需要深入了解现有的映射文件以了解如何配置它(例如here)< / p>

除非你有一些特定的要求,否则我会坚持使用SWIG,因为它有详细记录。 SharpGen更适合已经使用SharpDX并希望访问自己的自定义C ++ COM对象的开发人员。