使用DLLImport导入一个类

本文关键字:一个 DLLImport 导入 使用 | 更新日期: 2023-09-27 18:13:59

我在dll中有一个类:例如:

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

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

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

提前感谢。

使用DLLImport导入一个类

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

恐怕只有导入到静态类中的函数。

DllImport仅在希望从非托管库(如用c++编写的库)调用非托管函数时使用。

当你有一个托管的。net程序集时,你只需将它作为引用添加到你的项目中并使用它。

假设你有一个。net类库包含以下类:

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

,然后您有一些其他项目需要使用此程序集,您转到解决方案资源管理器中的参考节点,并将引用添加到给定的程序集。然后将名称空间带入作用域:

using foo;

并实例化类:

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

这是一个标准的c++导出机制,只适用于c++。你不能直接从c#中导入它。有一些变通方法,比如从c++程序集中导出托管类型,使用单独的托管包装器,使用COM和类型库或类似的东西,但是你不能使用c++应用程序使用的相同的导入/导出机制。