2009-11-06 33 views

回答

5

最简单的方法是在C++/CLI中写一个'shim'程序集。这使您可以将非托管界面和托管代码混合在一起,以便您可以将非托管API“翻译”成托管代码中可以使用的一些API。

这里有很多资源,深入的概述请参阅C++/CLI Rationale以及有关互操作性问题的讨论,请尝试在.NET to C++ Bridge上发布此信息。

+0

+1这正是我过去所做的。它使我的生活变得更加容易,特别是因为托管C++并不困难。 – 2009-11-06 19:59:11

2

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

作为Rob Walker mentioned,最简单的方法是使用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,那么这很容易,但是否则可能是这样。