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

Håk*_*sen 2 c c# dll c++-cli wrapper

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

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

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

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

Bot*_*000 5

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

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

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

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