从C#类库导出函数

时间:2010-03-11 13:27:37

标签: c# c++ dll export

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

4 个答案:

答案 0 :(得分:8)

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

  1. 使用托管C ++
  2. 将您的C#类公开为COM对象,并从C ++代码中使用它们
  3. Host the .NET runtime in your C++ project并通过它与您的C#类进行交互。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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