从C#类库导出函数

如何导出在C#类库中定义的函数,同时允许它们导入到非托管C ++应用程序/ DLL并从中调用?

严格来说,你不能像在经典的.dll中一样导出函数,因为.NET .dll根本不是真正的.dll。 您唯一的三个选择是:

  1. 使用托管C ++
  2. 将C#类公开为COM对象,并从C ++代码中使用它们
  3. 在C ++项目中托管.NET运行时,并通过它与您的C#类进行交互。

你不会。 不支持。 您几乎只能从库C#类中导出COM对象。

您的C ++应用程序必须从托管CLR开始。 .NET DLL没有任何特殊要求。

您还可以为C#库创建一个C ++包装器 – 一个简单的Managed C ++ DLL,它可以导入.NET方法并以原生方式导出它们。 这会添加一个额外的图层,但如果C#库是必须的,它可能会很有用。

另一种选择是调整已编译的程序集以导出函数。 AC#编译器无法做到这一点,但需要稍微更改MSIL代码才能完成任务。 看看这篇文章 – 有关于这些东西是如何工作的一些链接,以及一个自动化它的工具(尽管我自己没有尝试过)。