.net - SharpGen 对于 SharpDX 以外的其他项目有用吗?还是我应该使用 SWIG?

标签 .net wrapper generator swig managed

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

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

最佳答案

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

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

关于.net - SharpGen 对于 SharpDX 以外的其他项目有用吗?还是我应该使用 SWIG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14444386/

相关文章:

c# - 使用 Isolated COM 时应用程序在 CoCreateInstance 期间挂起

.net - Tcpip 监听器套接字 SSL 流如此困惑

c++ - 在 C : How to properly write some sort of "delete/dispose" function? 中使用 C++ 类

c# - 为什么复制流然后使用 BinaryFormatter 反序列化比仅仅反序列化更快

c# - 如何在调试时使用 ToString 以外的委托(delegate)来显示对象的值?

Python:异常装饰器。如何保留堆栈跟踪

c++ - 为什么#include <Python.h> 不起作用?

javascript - JavaScript 中的生成器和闭包有什么区别?

python - 从 Python 中的 Generator 类生成 n 行

python - 将 while 转换为生成器的速度减慢了 3.4 倍