使用DLLImport导入类

时间:2011-11-07 22:30:31

标签: c# .net dllimport

我在dll中有一个课程: 例如:

namespace foo {
   public class baa {
      /* ... */
  }
}

如何从dll导入baa类?有可能吗?

[DllImport(DllName)]
public extern ?? foo() ??

提前致谢。

3 个答案:

答案 0 :(得分:7)

那不行。非托管DLL导出C接口,而不是C++接口。对于托管DLL(C#或C ++ / CLI),您根本不需要DllImport。

我只害怕导入静态类的函数。

答案 1 :(得分:2)

DllImport仅在您想要从非托管库调用非托管函数时使用(例如用C ++编写的函数)。

当您拥有托管的.NET程序集时,只需将其添加为项目的引用并使用它。

假设你有一个包含以下类的.NET类库:

namespace foo {
   public class baa {
      /* ... */
  }
}

然后你有一些其他项目需要使用这个程序集,你可以转到解决方案资源管理器中的References节点和给定程序集的Add Reference。然后将命名空间放入范围:

using foo;

并实例化该类:

baa b = new baa();
... use the b instance here

答案 2 :(得分:0)

这是一种仅适用于C ++的标准C ++导出机制。您无法直接从C#导入它。有一些解决方法,比如从MC ++程序集导出托管类型,使用单独的托管包装器,使用COM和类型库或类似的东西,但不能使用C ++应用程序使用的相同导入/导出机制。