使用DLLImport导入一个类
本文关键字:一个 DLLImport 导入 使用 | 更新日期: 2023-09-27 18:13:59
我在dll中有一个类:例如:
namespace foo {
public class baa {
/* ... */
}
}
如何从dll中导入baa
类?有可能吗?
[DllImport(DllName)]
public extern ?? foo() ??
提前感谢。
这行不通。非托管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++应用程序使用的相同的导入/导出机制。