从没有COM的非托管C ++应用程序调用C#dll

有没有办法在没有COM使用的情况下从c ++非托管应用程序调用c#dll?

您可以使用Reverse P/Invoke执行此操作 – 此处的示例和讨论。

实际上可以反汇编,修改IL,并使用导出的函数重新组装它。 几年前我搞砸了这个,并创建了一个应用程序,它将反汇编一个DLL,提供一个可能被导出的函数列表 – 允许用户选择它们,然后重新编写IL并重新组装所有内容。 然后,我可以从非托管代码直接调用dll …或者从托管代码p调用dll(不是很实用,但仍然很有趣)。

当然,有一个原因是.net语言本身不支持这一点(即使它在MSIL中受支持)。 我不会在生产中使用它:

死链接: http//www.csharphelp.com/2007/03/exporting-managed-code-as-unmanaged/

Wayback Machine: https ://web.archive.org/web/20140213030149/http: //www.csharphelp.com/2007/03/exporting-managed-code-as-unmanaged/

我可能有点晚了,但看看这个 。

使用这个小的msbuild任务,您可以创建一个可以被调用的C#库,就像它是一个本机DLL一样。 (例如,为需要它们的本地dll的应用程序编写插件)

哦,别忘了使用项目模板 ,它将为您设置一切。

你唯一的选择就是使用C ++ .net或为它创建一个C ++ .net包装器,它可以导出你需要的东西。

从C ++调用C#代码