2

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

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

4

1 回答 1

4

SWIG 是一个有据可查的通用互操作包装器,而 SharpGen 确实是 SharpDX 中使用的内部工具,专门设计用于 C++ COM 接口(或具有虚拟纯方法的 C++ 类)。虽然 SWIG 需要编译 C++ 存根,但 SharpDX 完全从 .NET 执行整个互操作(因此您可以享受 AnyCPU 的好处)。SharpGen 尚未打包以便在 SharpDX 构建之外轻松使用,但该工具本身可以在没有 SharpDX 的情况下使用,尽管它需要深入研究现有的映射文件才能知道如何配置它(这里有一个示例)

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

于 2013-01-22T01:22:29.960 回答