我有一个第三方C库,我需要在C#中使用它。系统的其余部分是用C#编写的,因此使用C ++ / CLI只是包装器的一个选项。
使用C ++ / CLI包装C库而不是C#有什么好处?创建C#-wrapper有什么好处吗?
这些库包含一些结构,一些枚举和许多函数。
编辑:是否可以在C#中使用C结构和枚举而不包装它们?
答案 0 :(得分:5)
使用C ++ / CLI的优点是您可以在同一个程序集中编写本机代码和托管代码。
使用C ++ / CLI时,与C库交互更容易,您可以正常使用所有库,并且仍然可以公开完全托管的.NET接口或类。但是当然C ++ / CLI增加了一些复杂性。
另一方面,在C#中,您需要重新声明所有结构并使用DllImport在C#中再次声明C函数。
我会说简单的互操作任务(比如一些函数和几个结构),使用C#和PInvoke就可以了。如果使用完整的API需要大量的结构重新定义,固定,转换等等,C ++ / CLI可能是更好的选择。