有没有办法在没有COM使用的情况下从c ++非托管应用程序调用c#dll?
答案 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包装器来导出你需要的东西。