2

我有一个需要从 C# 使用的第三方 C 库。系统的其余部分是用 C# 编写的,因此使用 C++/CLI 只是包装器的一个选项。

使用 C++/CLI 包装 C 库而不是 C# 有什么优势?创建 C# 包装器有什么好处吗?

这些库包含一些结构、一些枚举和许多函数。

编辑:是否可以在 C# 中使用 C 结构和枚举而不包装它们?

4

1 回答 1

5

使用 C++/CLI 的优点是您可以在同一个程序集中编写本机代码和托管代码。

使用 C++/CLI 时与 C 库交互更容易,您可以正常使用所有库,并且仍然公开完全托管的 .NET 接口或类。但当然 C++/CLI 增加了一些复杂性。

另一方面,在 C# 中,您需要重新声明所有结构并使用 DllImport 在 C# 中再次声明您的 C-Function。

我想说对于简单的互操作任务(比如一些函数和几个结构),使用 C# 和 PInvoke 就可以了。如果使用需要大量结构重定义、固定、转换等的完整 API,C++/CLI 可能是更好的选择。

于 2012-05-25T08:19:20.153 回答