使用C ++ / CLI而不是C#包装(第三方)C库(dll)有什么好处?

时间:2012-05-25 07:19:50

标签: c# c dll c++-cli wrapper

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

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

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

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

1 个答案:

答案 0 :(得分:5)

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

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

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

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