假设Foo类的简单方法:
- 创建一个C ++ / CLI项目,称为FooWrapper。
- 使FooWrapper依赖于非托管dll(但是通常情况下)。
- 创建一个托管类ManagedFoo,其中包含单个Foo *类型的私有实例字段。
- 在ManagedFoo中提供公共包装功能,这些功能会转发到基础实例字段。
- 可选(尽管推荐):
- 将参数从.net习惯用法(字符串等)转换为C ++习惯用法(std :: string或char *)
- 捕获非托管异常并抛出托管异常
然后,使您的C#代码依赖于FooWrapper项目/ dll,并确保非托管dll随其正确部署,如何完成取决于非托管dll,但通常在同一目录中就足够了。
如果函数不依赖于类的实例,则P / Invoke更为简单



