【发布时间】:2011-05-26 19:46:07
【问题描述】:
有没有办法在不使用 COM 的情况下从 c++ 非托管应用程序调用 c# dll?
【问题讨论】:
-
你总是可以embed Mono...
-
可以通过混合模式的 dll 来完成。
-
这里列出了多种技术:stackoverflow.com/a/23182821/184528
有没有办法在不使用 COM 的情况下从 c++ 非托管应用程序调用 c# dll?
【问题讨论】:
实际上可以反汇编、修改 IL 并用导出的函数重新组装它。几年前我搞砸了,并创建了一个可以反汇编 dll 的应用程序,提供可能导出的函数列表 - 允许用户选择它们,然后重新编写 IL 并重新组装所有内容。然后,我可以直接从非托管代码调用 dll...或者从托管代码 p-invoke 到 dll(不是很实用,但很有趣)。
.net 语言本身不支持这肯定是有原因的(即使 MSIL 支持它)。我不会在生产中使用它:
死链接: http://www.csharphelp.com/2007/03/exporting-managed-code-as-unmanaged/
【讨论】:
我可能有点晚了,但请查看this。
使用这个 msbuild 小任务,您可以创建一个可以像本地 DLL 一样调用的 C# 库。 (例如,为需要原生 dll 的应用编写插件)
哦,别忘了使用project template,它会为您设置好一切。
【讨论】:
您可以使用 Reverse P/Invoke 执行此操作 - 示例和讨论 here。
【讨论】:
您唯一的选择实际上是使用 C++.net 或为其创建一个 C++.net 包装器来导出您需要的内容。
【讨论】: