在C#中使用C ++ API

我想使用用c ++编写的API。 它涉及包括头文件和库。 如何在C#应用程序中使用此API?

最简单的方法是在C ++ / CLI中编写一个“shim”程序集。 这使您可以将非托管接口和托管代码混合在一起,这样您就可以将非托管API“转换”为托管代码中可以使用的API。

有很多资源,深入概述请参阅C ++ / CLI基本原理 ,有关互操作问题的讨论,请参阅.NET到C ++ Bridge上的这篇文章。

有几个选项可以做到这一点。

Rob Walker提到的最简单的方法是使用C ++ / CLI创建托管包装器。

但是,还有其他选择。

  1. 您可以使用SWIG为C ++ API生成C#包装器。 这样做效果相当不错,但是选择起来比较困难。 (如果您还希望为C ++ API创建其他语言包装器,这很好,因为您可以使用一组API执行C#/ .NET,python,Java等。)

  2. 您可以使用Platform Invoke(P / Invoke)来访问C ++编写的DLL。 如果你的C ++ DLL有一个C API,这会更容易,但是否则可能。