在C ++代码中使用C#dll

我需要在我的C ++代码中集成这个C#dll 。 我想调用一些用C#编写的函数来自dll,其余代码用C ++编写。 什么是最简单,最快捷的方法? 该程序仅在Windows上执行。

从非托管代码调用.NET DLL基本上有两种情况:

  1. .NET DLL公开了一个COM接口。 在这种情况下,您可以使用C ++代码中的COM。
  2. .NET DLL不公开COM接口。 在这种情况下,您有两种可能性(简化):

    2.A. 如下所述托管CLR: 将公共语言运行时加载到进程中
    2.B. 编写一段托管C ++代码(另一个DLL – 用C ++ / CLI编写)来包装.NET DLL并向未受管客户端公开“旧方式”DLL导出。

我不是特别了解sharpbox系统,但看起来它是纯.NET并且不暴露COM接口,所以2.b可能是最好的方法(不那么容易……)。 也许它有一个可以使用的REST / Web更简单的API。

PS:您还可以将导出添加到.NET DLL。 这里描述: 是否可以从VS C ++中的C#DLL导出函数? 但它有点hacky。