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

时间:2010-12-16 21:41:33

标签: c# c++ dll com unmanaged

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

4 个答案:

答案 0 :(得分:5)

您可以使用Reverse P/Invoke执行此操作 - 示例和讨论here

答案 1 :(得分:2)

实际上可以反汇编,修改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/

答案 2 :(得分:1)

我可能会有点迟到,但请检查this

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

哦,别忘了使用project template,它会为你设置一切。

答案 3 :(得分:0)

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

Calling C# code from C++